Python

Python基础(39) -装饰器 staticmethod &

2020-03-10  本文已影响0人  xianling_he

staticmethod 与classmethod 的区别

  1. 两者都是用来声明静态方法,类名,方法名
  1. staticmethod 不需要表示自身对象的self和自身类的class参数,就像普通函数一样定义
  2. 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修饰器的方法需要一个参数用于传入当前类本身

上一篇 下一篇

猜你喜欢

热点阅读