python 之 staticmethod,classmethod,property的区别
绑定方法和非绑定方法:
普通def定义的都是绑定给对象的方法,对象调用时会自动传入对象本事,而类调用时需手动传入对象。
加上@classmethod装饰器就是绑定给类的方法,会自动传类本身
加上@staticmethod是非绑定方法,不会自动传类参数或对象参数
参数有self |
能访问类方法 |
能访问实例方法 |
说明 |
|
staticmethod |
否 |
否 |
否 |
与类、实例均无关 |
classmethod |
是 |
是 |
否 |
只能访问类变量 |
property |
是 |
是 |
是 |
把方法变为属性, 调用时不能加括号 |