类属性和实例属性

类属性:直接在class中 定义属性,通过类或者实例名称都可以访问,所有实例都可以共享。

实例属性:通过self绑定属性,或者通过实例名动态添加属性。

使用中,实例属性和类属性最好不要同名,不然会出现意想不到的问题。

class People():
    nationality="chinese"    #类属性
    def __init__(self,nationality):
        self.nationality = nationality   #实例属性


p1=People("usa") 
p1.name="wanggang"               #实例1动态添加属性
print p1.nationality             #通过实例名访问
print People.nationality         #通过实例名访问

p1.nationality  ="japanise"
print p1.nationality             #通过实例名访问
print People.nationality         #通过实例名访问

del p1.nationality               
print People.nationality         #通过实例名访问
#结果
usa  #实例1属性,实例属性优先于类属性
chinese #类属性
japanise #修改实例1属性,
chinese  #类属性不会修改
chinese  #删除实例属性后,使用类属性
原文地址:https://www.cnblogs.com/josie-xu/p/10456538.html