类方法与类属性

类方法的存在即为了修改类属性。python

代码示例:3d

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