python内置装饰器

2021-10-25  本文已影响0人  萝卜枣

1.@property
把类内方法当成属性来使用,必须要有返回值,相当于getter。

class ZhangSan:
  first_name = 'San'
  last_name = 'Zhang'

  @property
  def full_name(self):
      return self.last_name + self.first_name

  zhangSan = ZhangSan()
  print(zhangSan.full_name) #当成属性来使用

2.@staticmethod
静态方法,不需要表示自身对象和自身类的cls参数,就跟使用函数一样。该方法可以直接被调用无需实例化。

class ZhangSan:
    @staticmethod
    def say_hello():
        print('同学你好')

ZhangSan.say_hello()

# 实例化调用也是同样的效果
# 有点多此一举
ZhangSan.say_hello() 等价于
xiaoming = XiaoMing()
xiaoming.say_hello()

3.@classmethod
类方法,不需要self参数,但第一个参数需要是表示自身类的cls参数。该方法可以直接被调用无需实例化,相对于staticmethod的区别在于它会接收一个指向类本身的cls参数

class ZhangSan:
    name = '张三'

    @classmethod
    def say_hello(cls):
        print('同学你好, 我是' + cls.name)
        print(cls)

ZhangSan.say_hello()
上一篇下一篇

猜你喜欢

热点阅读