【零碎知识】【Python】@classmethod 与 @staticmethod

@classmethod 与 @staticmethod这两个方法很容易混淆,因为使用时都是通过类名直接调用其方法,与实例无关。下面记录下两者的区别。

@classmethod

在Python中,@classmethod是一个装饰器,用于将一个方法标记为类方法。类方法是与类关联的方法,而不是与类的实例关联的方法
使用@classmethod装饰器可以使方法在类级别上执行,而不是在实例级别上执行。这意味着你可以直接通过类名调用该方法,而不是通过类的实例调用该方法。
下面是一个简单的示例,展示了如何使用@classmethod装饰器:

class MyClass:@classmethoddef my_classmethod(cls, arg1, arg2):return cls, arg1, arg2
# 调用类方法
result = MyClass.my_classmethod("hello", "world")
print(result)  # 输出: (<class '__main__.MyClass'>, 'hello', 'world')

在上面的示例中,my_classmethod是一个类方法,它接受两个参数arg1arg2。使用@classmethod装饰器后,可以直接通过类名MyClass来调用该方法。该方法的第一个参数是类本身,通常使用cls作为参数名来接收。在方法体内部,可以直接使用类名而不是实例来访问属性和其他方法。

@staticmethod

@staticmethod装饰器将一个方法变为静态方法。这意味着这个方法不访问类的属性或方法,也不接受隐式的cls参数。静态方法本质上就是一个普通的函数,只是它被定义在类内部。
示例:

class MyClass:@staticmethoddef my_static_method(param1, param2):print(f"MyClass.my_static_method received {param1} and {param2}")
MyClass.my_static_method("value1", "value2")  # 输出: MyClass.my_static_method received value1 and value2

@classmethod 与 @staticmethod的不同

  1. 参数传递:
  • @classmethod装饰的类方法需要传入类参数cls,它表示类本身,并且在调用类方法时,Python会自动将类本身作为第一个参数传递给方法。这使得类方法可以访问和修改类状态。
  • @staticmethod装饰的静态方法不需要表示自身对象的self和自身类的cls参数(这两个参数都不需要添加),因此它无法访问类的属性和方法。静态方法更像是在类的命名空间中定义的普通函数,它们只是在类的定义中,以便在逻辑上与类保持相关性。
  1. 使用场景:
  • 类方法常用于工厂模式,创建类的实例。由于在类方法中可以使用cls参数来引用类本身,并可以调用类的其他方法或修改类状态,因此类方法可以在不创建类实例的情况下对类进行操作。
  • 静态方法通常用于执行与类相关但与特定实例无关的操作。它们不依赖于对象状态,也不修改类状态。静态方法只是通过类来调用,以便在逻辑上与类保持关联。

以上大部分回答来自 文心一言,有时候利用大模型查问题真的非常方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/640106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MfgTool烧写工具

系列文章目录 MfgTool烧写工具 MfgTool烧写工具 系列文章目录一、MfgTool工具简介二、烧写NXP官方系统三、烧写自己的系统四、改造自己的烧写工具 一、MfgTool工具简介 1、mfgtool是NXP官方做的向I.MX系列烧写系统的软件&#xff0c;运行在windows下。可以烧写uboot.imx、zIma…

如何在Shopee深圳站点进行选品并提高销售潜力?

在如今的电商市场中&#xff0c;选品是卖家们提高销售业绩的重要环节。对于在Shopee深圳站点进行选品的卖家来说&#xff0c;了解市场需求、分析竞争对手、优化供应链管理、制定合理的价格策略以及精准的营销策略都是至关重要的。本文将为您介绍一些关键策略&#xff0c;帮助您…

php目录操作示例

目录 1.常用函数 2.列举当前目录列表 3.判断是否是文件夹 1.常用函数 函数名功能scandir 列出指定路径中的文件和目录 opendir 打开文件夹&#xff0c;返回操作资源 readdir读取文件夹资源closedir 关闭文件夹操作资源 is_dir 判断是否是文件夹 filetype 显示是文件夹还是文…

CSS 蜡烛效果

<template><view class="holder"><!-- 身子 --><view class="candle"><!-- 光源 --><view class="blinking-glow"></view><!-- 火星子 --><view class="thread"></view>…

VLM 系列——CLIP——论文解读

一、概述 1、是什么 论文全称《Learning Transferable Visual Models From Natural Language Supervision》,是使用图文对(将图像表征与语言联系起来)使用对比学习(有的文章称为自监督,有的文章称为无监督)训练的多模态模型。从互联网上大量文本的监督(自然语言监督)中…

transformer优化(二)-DETR 学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2005.12872.pdf 代码地址&#xff1a;https://github.com/bubbliiiing/detr-pytorch https://github.com/facebookresearch/detr 1.是什么&#xff1f; DETR&#xff08;Detection Transformer&#xff09;是一种基于Transforme…

新崛起的自动化神器Playwright

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

词语的魔力:语言在我们生活中的艺术与影响

Words That Move Mountains: The Art and Impact of Language in Our Lives 词语的魔力&#xff1a;语言在我们生活中的艺术与影响 Hello there, wonderful people! Today, I’d like to gab about the magical essence of language that’s more than just a chatty tool in o…

怎么去除水中的溴酸盐

语&#xff1a;近年来&#xff0c;我国矿泉水市场发展迅速&#xff0c;各种品牌和类型的矿泉水琳琅满目。然而&#xff0c;在众多矿泉水产品中&#xff0c;部分产品却存在溴酸盐超标的问题。本文将为您揭示矿泉水溴酸盐超标的危害&#xff0c;提醒消费者在选购矿泉水时务必谨慎…

redis的事件机制

文章目录 文件事件1. 文件事件处理器的构成2. I/O多路复用程序的实现3. 事件的类型4. 文件事件的处理器 时间事件1. 实现 事件的调度与执行 Redis服务器是一个事件驱动程序&#xff08;单Reactor单线程模型&#xff09;&#xff0c;服务器需要处理以下两类事件&#xff1a; 文件…

Kafka(三)【Broker 存储】

目录 前言 Kafka Broker 1、工作流程 1.1、Zookeeper 存储的 Kafka 信息 1.2、Kafka Broker 的总体工作流程 1.3、Broke 重要参数 2、Kafka 副本 2.1、副本基本信息 2.2、Keader 选举流程 2.3、Leader 和 Follower 的故障处理细节 Follower 故障 Leader 故障&#x…

浅谈Java序列化

基本介绍 Java序列化机制允许将一个Java对象的状态转换为字节流&#xff0c;以便可以将其保存到磁盘或在网络上进行传输。稍后&#xff0c;这些字节流可以被反序列化以重建原来的对象。这个机制在远程方法调用&#xff08;RMI&#xff09;、Java Beans&#xff0c;以及持久化等…

2017年认证杯SPSSPRO杯数学建模A题(第一阶段)安全的后视镜全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 A题 安全的后视镜 原题再现&#xff1a; 汽车后视镜的视野对行车安全非常重要。一般来说&#xff0c;汽车的后视镜需要有良好的视野范围&#xff0c;以便驾驶员能够全面地了解车后方的道路情况。同时&#xff0c;后视镜也要使图像的畸变尽可能…

国产品牌GC6609与TM2209的参数分析,为什么适用于3D打印机,医疗器械等产品中

步进电机驱动的应用方案目前市场上大多选用国外品牌的电机驱动器&#xff0c;其中trinamic的TMC2208/2209在这一块的应用很广泛。但是由于市场越来越应激。&#xff0c;当前对于产品开发成本要求也越来越低&#xff0c;国产品地准出了相应的TMC2208/2209&#xff0c;因此trinam…

Vue3+ElementUI 多选框中复选框和名字点击方法效果分离

现在的需求为 比如我点击了Option A &#xff0c;触发点击Option A的方法&#xff0c;并且复选框不会取消勾选&#xff0c;分离的方法。 <el-checkbox-group v-model"mapWork.model_checkArray.value"> <div class"naipTypeDom" v-for"item …

3、git实战操练

1、马上要封包上线了&#xff0c;如何将这个版本的代码封存。 命令操作/含义git tagtag的创建&#xff0c;推到服务器git archive对源码进行打包 $ git archive master --formatzip --output master.zip 2、 明天就是上线日期&#xff0c;今天合并你已经做完的几个关联性不大…

国家急救日倡议活动暨120急救大课堂公益培训在京成功举办

2024年1月20日&#xff0c;由国家卫生健康委员会等多个相关部门指导&#xff0c;中国医院协会急救中心&#xff08;站&#xff09;分会主办&#xff0c;北京急救中心承办的“国家急救日”倡议活动暨急救科普大课堂公益培训系列活动&#xff0c;在全国范围内启动。 健康中国行动…

「优选算法刷题」:长度最小的子数组

一、题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输…

王晶感慨62岁刘德华的一日三餐,简直不是人过的日子

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 你是否曾对那些身材保持得如此之好的人感到过羡慕&#xff1f…

使用vue-pdf插件加载pdf

安装&#xff1a; // 安装这个版本&#xff0c;其它版本会有千奇百怪的错&#xff0c;这个版本和4.0.0都是可以的 cnpm install vue-pdf4.2.0// 安装pdfjs-dist cnpm install pdfjs-dist2.5.207 使用&#xff1a; // 我的css样式是pxToRem&#xff0c;友友们使用可能样式会有…