类方法的存在即为了修改类属性。
代码示例:
class People(object):
address = "山东" #类属性
#实例方法
def __init__(self):
self.name = "xiaowang" #实例属性
self.age = 20 #实例属性
#类方法
@classmethod
def setNewAddress(cls):
cls.address = "内蒙古"
#可以通过类名的方式来获取类属性
#但是不能通过类名获取实例属性
#类对象,可以直接调用类属性,也可以直接调用类方法
#但是类对象,不允许调用实例属性,并且也不允许调用实例方法
#如果是一个实例对象
#它可以获取实例属性和类属性的值,但是只能修改实例属性,不能修改类属性
#他还可以调用实例方法和类方法
xiaoming = People()
xiaoming.setNewAddress()
print(People.address)
执行结果:
内蒙古
代码示例2:
class Animal(object):
def __init__(self, name = "动物", color = "白色"):
self.name = name
self.color = color
class Horse(Animal):
horseNum = 0 #类属性
def __init__(self, name, color = ""):
super().__init__(name)
self.setHorseNum()
@classmethod
def setHorseNum(cls):
cls.horseNum += 1
bailongma = Horse("白龙马")
print(bailongma.name)
print(bailongma.color)
print(bailongma.horseNum)
chituma = Horse("赤兔马")
print(chituma.name)
print(chituma.color)
print(chituma.horseNum)
执行结果:
白龙马
白色
1
赤兔马
白色
2