美文网首页Python
Python基础(39) -装饰器 staticmethod &

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

作者: xianling_he | 来源:发表于2020-03-10 21:38 被阅读0次

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修饰器的方法需要一个参数用于传入当前类本身

相关文章

网友评论

    本文标题:Python基础(39) -装饰器 staticmethod &

    本文链接:https://www.haomeiwen.com/subject/zpqndhtx.html