1. selfcls

首先,selfcls并不是关键字,而是约定的统一命名规范。简单说:self用于指代实例/对象(Instance/Object),cls用于指代类(Class)。两者经常以参数形式出现在类方法中,通过它们,类方法可以读取或修改实例或类的状态,以及调用相关方法。

selfcls关系紧密的是方法的类型,因为两者经常会以参数形式出现在类的方法中,由于它们是实例与类之间的差别,因此也会自然体现到了类的方法上,即:类的方法也会分实例/对象级别类级别,前者在方法体内引用self,后者在方法体内引用cls

2. 实例方法,静态方法,类方法

所以,我们来看一下Python中类方法的分类:

  • 实例方法(Instance Methods)

最常见的方法,隶属于实例/对象,仅当对象实例化之后方可调用,内部维护的状态(各字段)也都是实例级别的。无需函数装饰器修饰。

  • 静态方法(Static Methods)

类级别的方法,与其编程语言中使用static修饰的方法类似,使用@staticmethod装饰器修饰。静态方法既不能接受self也不能接受cls作为参数,因此,静态方法即不能读取或修改实例的状态,也不能读取或修改类的状态。从这个角度上讲,静态方法更像是一段独立的“过程性代码”或“脚本”的封装,完全无状态。

  • 类方法(Class Method)

同样是类级别的方法,与其编程语言中使用static修饰的方法类似,使用@classmethod装饰器修饰。不同于静态方法,类方法可以接受cls作为参数,这就意味着类方法可以读取或修改类的状态,这是其与静态方法最大的不同之处。

下图汇总了三种方法的描述:


参考:

Classes and Objects in Python

cls vs self — Method Types In Python

Python’s Instance, Class, and Static Methods Demystified

Python笔记 · self,cls,实例方法,静态方法,类方法相关推荐

  1. python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...

    这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...

  2. 类的实例方法静态方法类方法属性方法属性

    目录: 分类 实例方法 静态方法 类方法 属性方法 属性 分类: 按照调用方式可以分为3种,实例方法.静态方法.和类方法 实例方法 实例方法只能通过实例对象调用,不能通过类进行调用.实例方法再定义时候 ...

  3. python方法的分类(实例方法、类方法、静态方法)

    方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊?  只需要记住一点,方法是用来描述一个目标的行为动作!  不论你是直接通过 类名.方法调用,还是通过由类生成的实例 ...

  4. 初学者python笔记(静态属性、类方法、静态方法、类的组合)

    文章目录 类的三大方法 1.静态属性 2.类方法.静态方法 3.三大方法总结 类的组合 1.用法分析 2.面试案例分析 本篇文章是上一篇:初学者python笔记(面向对象编程.类与对象)的后续篇,是关 ...

  5. python——动态的增加实例方法、类方法、静态方法

    初始类为: import typesclass Person:def __init__(self,name,age):self.name=nameself.age=ageif __name__ == ...

  6. python 实例方法 类方法_Python实例方法 静态方法 类方法

    @staticmethod和@classmethod的区别 class 类 @staticmethod @classmethod 首先创建一个类,如果想要调用Student类中的方法get_score ...

  7. Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))

    面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...

  8. 初学者python笔记(类的继承与多态---详解)

    文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...

  9. python 静态方法 类方法 的作用_Python实例方法、类方法、静态方法的区别与作用详解...

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  10. python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)

    方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方 ...

最新文章

  1. 深度学习和目标检测系列教程 17-300: 3 个类别面罩检测类别数据集训练yolov5s模型
  2. python源码多平台编译_ubuntu编译python源码的坑
  3. 994. 腐烂的橘子
  4. 2.2物理层传输介质
  5. 这是 Google 工程师 Amit Singhal 发表在 Google 官方博客的一篇文章,讲述了 Google 搜索排名背后的一些技术,涉及到 Google 对网页,对语义,对用户意图的理解。
  6. ubuntu18.04安裝搜狗輸入法
  7. java 标记_java – 标记注释与标记接口
  8. for/map循环里面进行异步操作async/await后返回数据,for里不能直接return执行方法函数...
  9. 【行业专题报告】食品饮料、休闲零食、咖啡茶饮-专题资料
  10. 错误异常too many open files解决方法
  11. 关于solidworks+workbench的参数化建模分析的一点心得1
  12. [区块链]区块链技术在冷链运输领域的应用
  13. Flexbox在button/fieldset/legend中(比如safair)失效问题
  14. 互联网发展简史(1)ARPANET的建立
  15. 学大伟业DAY2模拟赛
  16. 学习银行业务----存款
  17. Unity 使用ContentSizeFitter刷新不及时的问题
  18. 解密淘宝优惠群泛滥的原因
  19. 信息安全实验六:RSA数字签名算法 2019.06.01
  20. video标签不能自动播放的原因

热门文章

  1. 什么是云渲染?云渲染应用场景有哪些?
  2. 请领导过目文件怎么说_职场话题:当领导说“你定吧”,你会怎么做?
  3. (附源码)APP+spring boot心理健康线上咨询系统 毕业设计 031539
  4. 苹果手机备份有必要吗_苹果手机备份最简单方式!原来大神都这样做
  5. hdu5773The All-purpose Zero
  6. 对“陶哲轩-来自特征值的特征向量”的理解
  7. [乡土民间故事_徐苟三传奇]第二回_巧答言长工骂财主
  8. 暴走湖北五城,聊聊我的湖北印象
  9. java rrd_java利用rrd4j做服务监控的图片
  10. 刘华:上云还是不上云,这是一个问题