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()
网友评论