静态方法,小结

'''
静态方法(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...')
原文地址:https://www.cnblogs.com/xuewei95/p/14651062.html