class TaSt:
age = 88 # 类属性
def __init__(self, name):
self.name = name # 实例属性
def show(self, b):
print(u'实例方法', b)
@staticmethod
def show2(a):
print(u'静态方法',a)
@classmethod
def add(cls, a): # 第一个参数必须是类本身
print(u'类方法', a)
t1 = TaSt('55') # 实例化一个对象
t1.show('调用实例方法') # 调用实例方法
TaSt.show(t1, '类调用实例方法。传参是实例化后对象') # 类调用实例方法。传参是实例化后对象
t1.show2('实例调用静态方法') # 实例调用静态方法
TaSt.show2('类调用静态方法') # 类调用静态方法
t1.add('类方法实例化后调用') # 类方法实例化后调用
TaSt.add('类方法直接使用类名调用') # 类方法直接使用类名调用
print(t1.name, '调用实例属性') # 类调不了
print(t1.age, '调用lei属性')
print(TaSt.age, '调用lei属性')
输出为:
实例方法 调用实例方法
实例方法 类调用实例方法。传参是实例化后对象
静态方法 实例调用静态方法
静态方法 类调用静态方法
类方法 类方法实例化后调用
类方法 类方法直接使用类名调用
55 调用实例属性
88 调用lei属性
88 调用lei属性
TaSt.show(t1, '类调用实例方法。传参是实例化后对象') 类直接调用普通的类方法的话,需要传入实例为第一个参数,也就是相当于传self,这里传了t1