Python小白不正確的使用類變量實(shí)例
不正確的使用類變量
看下面一個(gè)例子:
>>> class A(object): ... x = 1 ... >>> class B(A): ... pass ... >>> class C(A): ... pass ... >>> print A.x, B.x, C.x 1 1 1
看起來沒有問題。
>>> B.x = 2 >>> print A.x, B.x, C.x 1 2 1
嗯哈,還是和預(yù)想的一樣
>>> A.x = 3 >>> print A.x, B.x, C.x 3 2 3
我了個(gè)去。只是改變了A.x,為啥C.x也變了?
在Python里,類變量通常在內(nèi)部被當(dāng)做字典來處理并遵循通常所說的方法解析順序(Method Resolution Order (MRO))。因此在上面的代碼中,因?yàn)閷傩詘在類C中找不到,因此它會(huì)往上去它的基類中查找(在上面的例子中只有A這個(gè)類,當(dāng)然Python是支持多重繼承(multiple inheritance)的)。換句話說,C沒有它自己獨(dú)立于A的屬性x。因此對C.x的引用實(shí)際上是對A.x的引用。(B.x不是對A.x的引用是因?yàn)樵诘诙嚼顱.x=2將B.x引用到了2這個(gè)對象上,倘若沒有如此,B.x仍然是引用到A.x上的。)
知識(shí)點(diǎn)補(bǔ)充:
類變量、實(shí)例變量概念
類變量:
類變量就是定義在類中,但是在函數(shù)體之外的變量。通常不使用self.變量名賦值的變量。類變量通常不作為類的實(shí)例變量的,類變量對于所有實(shí)例化的對象中是公用的。
實(shí)例變量:
實(shí)例變量是定義在方法中的變量,使用self綁定到實(shí)例上的變量,只是對當(dāng)前實(shí)例起作用。
以上就是Python小白不正確的使用類變量實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于Python新手不正確的使用類變量的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Pytorch自定義CNN網(wǎng)絡(luò)實(shí)現(xiàn)貓狗分類詳解過程
PyTorch是一個(gè)開源的Python機(jī)器學(xué)習(xí)庫,基于Torch,用于自然語言處理等應(yīng)用程序。它不僅能夠?qū)崿F(xiàn)強(qiáng)大的GPU加速,同時(shí)還支持動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)。本文將介紹PyTorch自定義CNN網(wǎng)絡(luò)實(shí)現(xiàn)貓狗分類,感興趣的可以學(xué)習(xí)一下2022-12-12Pandas?時(shí)間序列分析中的resample函數(shù)
這篇文章主要介紹了Pandas?時(shí)間序列分析中的resample函數(shù),Pandas?中的resample函數(shù)用于各種頻率的轉(zhuǎn)換工作,下面我們就來看看其的參數(shù)、相關(guān)資料等,需要的小伙伴可以參考一下,希望給你帶來幫助2022-02-02使用Django搭建網(wǎng)站實(shí)現(xiàn)商品分頁功能
這篇文章主要介紹了使用Django搭建網(wǎng)站實(shí)現(xiàn)商品分頁功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05基于python利用Pyecharts使高清圖片導(dǎo)出并在PPT中動(dòng)態(tài)展示
這篇文章主要介紹了基于python利用Pyecharts使高清圖片導(dǎo)出并在PPT中動(dòng)態(tài)展示,pyecharts?是一個(gè)用于生成?Echarts?圖表的類庫。Echarts?是百度開源的一個(gè)數(shù)據(jù)可視化?JS?庫,下面來看看具體的實(shí)現(xiàn)過程吧,需要的小伙伴也可以參考一下2022-01-01圖解Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別
這篇文章主要介紹了Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別,淺拷貝和深拷貝想必大家在學(xué)習(xí)中遇到很多次,這也是面試中常常被問到的問題,本文就帶你詳細(xì)了解一下2023-05-05