Python笔记 · self,cls,实例方法,静态方法,类方法
1. self
和cls
首先,self
和cls
并不是关键字,而是约定的统一命名规范。简单说:self用于指代实例/对象(Instance/Object),cls用于指代类(Class)。两者经常以参数形式出现在类方法中,通过它们,类方法可以读取或修改实例或类的状态,以及调用相关方法。
与self
和cls
关系紧密的是方法的类型,因为两者经常会以参数形式出现在类的方法中,由于它们是实例与类之间的差别,因此也会自然体现到了类的方法上,即:类的方法也会分实例/对象级别
和类级别
,前者在方法体内引用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,实例方法,静态方法,类方法相关推荐
- python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...
这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...
- 类的实例方法静态方法类方法属性方法属性
目录: 分类 实例方法 静态方法 类方法 属性方法 属性 分类: 按照调用方式可以分为3种,实例方法.静态方法.和类方法 实例方法 实例方法只能通过实例对象调用,不能通过类进行调用.实例方法再定义时候 ...
- python方法的分类(实例方法、类方法、静态方法)
方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例 ...
- 初学者python笔记(静态属性、类方法、静态方法、类的组合)
文章目录 类的三大方法 1.静态属性 2.类方法.静态方法 3.三大方法总结 类的组合 1.用法分析 2.面试案例分析 本篇文章是上一篇:初学者python笔记(面向对象编程.类与对象)的后续篇,是关 ...
- python——动态的增加实例方法、类方法、静态方法
初始类为: import typesclass Person:def __init__(self,name,age):self.name=nameself.age=ageif __name__ == ...
- python 实例方法 类方法_Python实例方法 静态方法 类方法
@staticmethod和@classmethod的区别 class 类 @staticmethod @classmethod 首先创建一个类,如果想要调用Student类中的方法get_score ...
- Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))
面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...
- 初学者python笔记(类的继承与多态---详解)
文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...
- python 静态方法 类方法 的作用_Python实例方法、类方法、静态方法的区别与作用详解...
本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...
- python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)
方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方 ...
最新文章
- 深度学习和目标检测系列教程 17-300: 3 个类别面罩检测类别数据集训练yolov5s模型
- python源码多平台编译_ubuntu编译python源码的坑
- 994. 腐烂的橘子
- 2.2物理层传输介质
- 这是 Google 工程师 Amit Singhal 发表在 Google 官方博客的一篇文章,讲述了 Google 搜索排名背后的一些技术,涉及到 Google 对网页,对语义,对用户意图的理解。
- ubuntu18.04安裝搜狗輸入法
- java 标记_java – 标记注释与标记接口
- for/map循环里面进行异步操作async/await后返回数据,for里不能直接return执行方法函数...
- 【行业专题报告】食品饮料、休闲零食、咖啡茶饮-专题资料
- 错误异常too many open files解决方法
- 关于solidworks+workbench的参数化建模分析的一点心得1
- [区块链]区块链技术在冷链运输领域的应用
- Flexbox在button/fieldset/legend中(比如safair)失效问题
- 互联网发展简史(1)ARPANET的建立
- 学大伟业DAY2模拟赛
- 学习银行业务----存款
- Unity 使用ContentSizeFitter刷新不及时的问题
- 解密淘宝优惠群泛滥的原因
- 信息安全实验六:RSA数字签名算法 2019.06.01
- video标签不能自动播放的原因
热门文章
- 什么是云渲染?云渲染应用场景有哪些?
- 请领导过目文件怎么说_职场话题:当领导说“你定吧”,你会怎么做?
- (附源码)APP+spring boot心理健康线上咨询系统 毕业设计 031539
- 苹果手机备份有必要吗_苹果手机备份最简单方式!原来大神都这样做
- hdu5773The All-purpose Zero
- 对“陶哲轩-来自特征值的特征向量”的理解
- [乡土民间故事_徐苟三传奇]第二回_巧答言长工骂财主
- 暴走湖北五城,聊聊我的湖北印象
- java rrd_java利用rrd4j做服务监控的图片
- 刘华:上云还是不上云,这是一个问题