Python 类的属性和实例属性 Python 的动态语言
#定義一下類, 含有類屬性 aaa,
>>> class Aa:?
... aaa = 10
...?
#對(duì)類 Aa實(shí)例化出一個(gè)實(shí)例 a1
>>> a1 = Aa()?
>>> print(a1.__dict__)#查看實(shí)例并沒有自己的方法和屬性
{}
>>> a1.aaa #但是這個(gè)實(shí)例在調(diào)用屬性的時(shí)候, 發(fā)現(xiàn)自己沒有這個(gè)屬性, 于是去找其類有沒有這個(gè)屬性, 找到了就返回類的屬性
10
>>> print(a1.__dict__)# 但是實(shí)例 a1仍然沒有自己的屬性, 只是調(diào)用類的.?
{}
>>> a1.aaa += 2?#一旦用等號(hào)對(duì)a1.aaa 進(jìn)行賦值運(yùn)算, 就等同于a1.aaa = 12.給 a1 setatrr 了一個(gè)屬性,?
>>> print(a1.__dict__) #而且名字也是 aaa. 這里就成了實(shí)例發(fā)生. 優(yōu)先于類屬性
{'aaa': 12}
>>> a1.aaa
12
>>> a2 = Aa() #再實(shí)例化一個(gè)對(duì)象
>>> a2.aaa
10
>>> print(a2.__dict__) #新對(duì)象沒有自己的實(shí)例屬性
{}
>>>
>>> Aa.aaa #類的屬性沒有發(fā)生改變
10
>>> Aa.aaa += 5 #現(xiàn)在把類的屬性的值在內(nèi)存中變成15
>>> Aa.aaa
15
>>> a2.aaa #對(duì)于沒有自己實(shí)例屬性的 a2來說, 還是只能調(diào)用類的屬性,新值15
15
>>> a1.aaa #而 a1有了自己的實(shí)例屬性, 就不再隨類屬性變化了, 雖然屬性名相同, 但是指向的對(duì)象已經(jīng)不同
12
>>> a3 = Aa() #再來實(shí)例化一個(gè) a3, 實(shí)例化的時(shí)候, aaa = 10這一句已經(jīng)不再作用于類屬性 Aa.aaa,
>>> a3.aaa #難留內(nèi)存的類屬性的值是15
15
>>>
>>> Aa.aaa ?#現(xiàn)在不明白的是, Aa.aaa 已經(jīng)不是 已經(jīng)把 aaa 拋棄了? 要不然在實(shí)例化的時(shí)候, aaa = 10怎么辦?
15
>>>#看下圖解讀:
?
轉(zhuǎn)載于:https://www.cnblogs.com/guiyuhua/p/8639467.html
總結(jié)
以上是生活随笔為你收集整理的Python 类的属性和实例属性 Python 的动态语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF应用程序内存泄漏的一些原因
- 下一篇: Python POST 修改某计步APP