''' 静态方法(staticmethod) 只是名义上的归属类管理,不能使用类变量和实例变量,是类的工具包(类和实例都能调用) ''' class Ball_team: '''这是球队的类''' def __init__(self, name, boss, slogan): self.name = name self.boss = boss self.slogan = slogan @staticmethod def train(a, b, c): # 不能调用类属性及实例属性 print('%s和%s及%s在一起训练' % (a, b, c)) def test(): print('这是test函数') Ball_team.train('alex', 'yuanhao', 'lhf') # 类调用 b1 = Ball_team('tigger', 'wusir', 'jiayou') b1.train('sb', 'sx', 'sm') # 实例调用 Ball_team.test() # 类调用时不用传参,调用没有问题 # b1.test() # 实例调用时,会自动把实例传入到方法,所以这里会报错,无法调用(最起码要有一个参数来接收实例本身) print(Ball_team.__dict__) # train和test两个方法都在类的属性字典里,只不过一个表示staticmethod object,另一个function Ball_team.test print(b1.__dict__) # 实例属性字典依然只有数据属性 ''' 总结 静态属性:把函数属性封装成数据属性的形式,实例调用时不需要再用括号 类方法:参数默认为cls,只能调用类数据属性和函数属性,不能访问实例属性 静态方法:不能访问类属性和实例属性,是类的工具包(类和实例均可调用) '''
静态方法,小结
while True:
print('studying...')