python静态方法,类方法,属性方法,实例方法

DAY 3. 静态方法,类方法,属性方法,实例方法

有四种方法,实例方法,类方法,静态方法,属性方法

  • 实例方法

实例方法的第一个参数是self,他会指向类的实例化对象,只能被对象调用,如

class Demo:

    def instanceMethod(self):
        print("this is a instance method")

if __name__ == "__main__":
    demo = Demo()
    demo.instanceMethod()

用点调用时不需要传入对象参数,python会把调用实例方法的对象作为实例方法的第一个参数传入,等价于

if __name__ == '__main__':
    demo = Demo()
    Demo.instanceMethod(demo)
  • 类方法

使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,可以使用类(例如C.f())或实例(例如C()。f())调用类方法。 除了类之外,该实例被忽略。 如果为派生类调用类方法,则派生类对象将作为隐含的第一个参数传递。

class Demo:

    @classmethod
    def classMethod(self):
        print("this is a class method")

if __name__ == "__main__":
    demo = Demo()
    Demo.classMethod()
    demo.classMethod()

同样是语法糖,用点调用时会自动把调用类方法的类或对象作为第一个参数传入

  • 静态方法

用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,静态方法不会接收隐式的第一个参数,类似于c++中的静态方法,只是占用了类的命名空间,与类没有联系,了一使用类名或对象名调用

  • 属性方法

用来将一个方法变成静态属性,使用修饰器@property

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

TODO : 有点难改天专门学

总结

方法修饰器调用使用场景(个人理解)
实例方法/只能被对象调用大多数场景
类方法@classmethod能被对象或类调用只操作类属性
静态方法@staticmethod能被对象或类调用不操作类中的属性和方法
属性方法@property按静态属性的方法调用(不加括号)TODO

参考文章
GitHub 关于python的面试题

Python静态方法、类方法、属性方法

Python面向对象静态方法,类方法,属性方法

Python 实例方法、类方法、静态方法的区别与作用

python 文档 staticmethod

python 文档 classmethod

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Junebao

如果你碰巧财力雄厚的话...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值