举个例子说明
class Game(object):
num = 0 #类属性
def __init__(self): #实例方法
self.name='laowang' #实例属性
@classmethod
def add_num(cls): #类方法
cls.num += 1
@staticmethod
def print_mulu(): #静态方法
print('-'*20)
print('hahahah')
print('-'*20)
game = Game()
#类方法的调用 两种
Game.add_num()
game.add_num()
#类属性的调用
print('%d' % (Game.num))
#静态方法的调用
Game.print_mulu()
game.print_mulu()
类属性:相当于一个类中的全局变量,通过这个类实例化出来的对象都可以访问和修改类属性,可以用来记录被调用次数
实例方法:就是类中的自己调用的普通的方法
实例属性:可以被实例中的其他方法所访问
类方法:可以被实例对象调用也可以被类对象调用 @classmethod
静态方法:参数随意设置 @staticmethod
#总结
未加@之类装饰器时都是属于实例方法,只能被实例对象调用。
@classmethod类方法, 可以被类对象和实例对象调用。
@staicmethod静态方法,可以被类对象和实例对象调用,参数可以随意设置。