Python實例變量和類變量
類變量(類屬性):
類變量屬于類所有,所有實例共享一個變量
實例變量(實例屬性)
實例變量屬于各個實例所有,相互不干擾
1、實例屬性
給實例綁定屬性的方法可以通過self和實例變量
In [23]: class Cat(object):
...: def __init__(self, name):
...: self.name = name
...:
In [25]: c = Cat('Fat')
In [26]: c.name
Out[26]: 'Fat'
# 通過實例變量綁定屬性
In [27]: c.age = 2
In [28]: c.age
Out[28]: 2
2、類屬性
類屬性歸類所有,但所有實例都可以訪問它
In [31]: class Cat(object):
...: name = 'Fat' # 類屬性
...:
In [32]: c = Cat() # 生成實例
In [33]: c.name # 實例調用類屬性
Out[33]: 'Fat'
In [34]: c
Out[34]: <__main__.Cat at 0x78ba2e8>
In [35]: Cat.name # 類調用類屬性
Out[35]: 'Fat'
In [36]: c.name = 'thin' # 通過實例變量更改屬性“名字為short”
In [37]: c.name # 由于實例屬性優(yōu)先級比類屬性高,會屏蔽類屬性name=thin,所以輸出就是thin
Out[37]: 'thin'
In [38]: Cat.name # 類調用類屬性依舊是Fat
Out[38]: 'Fat'
In [39]: c.name
Out[39]: 'thin'
In [40]: del c.name # 刪除實例屬性
In [41]: c.name # 再次調用,由于實例屬性被刪除了,就又返回到了類屬性
Out[41]: 'Fat'