首页 > 技术文章 > 类属性和实例属性

josie-xu 2019-03-01 15:12 原文

类属性:直接在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  #删除实例属性后,使用类属性

 

推荐阅读