staticmethod 与classmethod 的区别
- 相同点:
- 两者都是用来声明静态方法,类名,方法名
- 不同点:
- staticmethod 不需要表示自身对象的self和自身类的class参数,就像普通函数一样定义
- classmethod 不需要self参数,但是第2个参数就需要自身的class参数,避免硬编码
staticmethod 与classmethod 用法
class myClass:
bar = 1
def __init__(self):
self.count = 20
def process(self):
print('process:',self.count)
@staticmethod
def static_proces():
print('static process')
print(myClass.bar)
@classmethod
def class_process(cls):
print('class process')
print(cls.bar)
print('-' * 20)
print(cls)
cls().process()
print(cls().count)
print(myClass.bar)
print('-'*20)
myClass.static_proces()
myClass.class_process()
print('-'*20)
myClass.bar = 123
print(myClass.bar)
hexianling.png
总结
1.用staticmethod修饰的方法不需要额外的参数,而用classmethod修饰器的方法需要一个参数用于传入当前类本身
网友评论