python中静态方法、类方法、属性方法区别

在python中,静态方法、类方法、属性方法,刚接触对于它们之间的区别确实让人疑惑。

类方法(@classmethod)

  • 是一个函数修饰符,表是该函数是一个类方法
  • 类方法第一个参数是cls,而实例方法第一个参数是self(表示该类的一个实例)
  • 类中普通函数至少要一个self参数,代表类对象实例
  • 类方法至少需要一个cls参数,通过cls可以获取到类本身的属性方法等元信息。当有个子类继承时,传入的是子类对象。
  • 对于类方法两种调用方式,类.func(),类实例.func()

静态方法(@staticmethod)

静态方法是不需要类(cls)和类实例(self)参数的。所以它的使用场景是:和类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法。比如封装一个工具类,一般情况下都可以采用静态方法形式。

静态方法的优点:

  • 代码可读性好:看到该标签就知道这个方法并不需要依赖对象本身的状态。
  • 节省内存空间,既然是与类实例无关自然就不用创建类实例对象。

属性方法(@property)

添加@property标签,表示将一个普通函数变成一个类属性,只读的

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000

参见知乎上一篇问答:

https://www.zhihu.com/question/20021164

猜你喜欢

转载自www.cnblogs.com/tianboblog/p/9690667.html