python中静态方法类方法属性方法区别
Posted 领域见识决定专业高度
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中静态方法类方法属性方法区别相关的知识,希望对你有一定的参考价值。
在python中,静态方法、类方法、属性方法,刚接触对于它们之间的区别确实让人疑惑。
类方法(@classmethod)
- 是一个函数修饰符,表是该函数是一个类方法
- 类方法第一个参数是cls,而实例方法第一个参数是self(表示该类的一个实例)
- 类中普通函数至少要一个self参数,代表类对象实例
- 类方法至少需要一个cls参数,通过cls可以获取到类本身的属性方法等元信息。当有个子类继承时,传入的是子类对象。
- 对于类方法两种调用方式,类.func(),类实例.func()
静态方法(@staticmethod)
静态方法是不需要类(cls)和类实例(self)参数的。所以它的使用场景是:和类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法。比如封装一个工具类,一般情况下都可以采用静态方法形式。
静态方法的优点:
- 代码可读性好:看到该标签就知道这个方法并不需要依赖对象本身的状态。
- 节省内存空间,既然是与类实例无关自然就不用创建类实例对象。
属性方法(@property)
添加@property标签,表示将一个普通函数变成一个类属性,只读的
参见知乎上一篇问答:
以上是关于python中静态方法类方法属性方法区别的主要内容,如果未能解决你的问题,请参考以下文章
面试必问python实例方法类方法@classmethod静态方法@staticmethod和属性方法@property区别
python中类对象实例对象类属性实例属性类方法实例方法静态方法