亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python中類(lèi)變量與成員變量的使用注意點(diǎn)總結(jié)

 更新時(shí)間:2017年04月29日 09:57:34   作者:Myths  
python 的類(lèi)中主要會(huì)使用的兩種變量:類(lèi)變量與成員變量。類(lèi)變量是類(lèi)所有實(shí)例化對(duì)象共有的,而成員變量是每個(gè)實(shí)例化對(duì)象自身特有的。下面這篇文章主要給大家介紹了在python中類(lèi)變量與成員變量的一些使用注意點(diǎn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

最近在用python寫(xiě)一個(gè)項(xiàng)目,發(fā)現(xiàn)一個(gè)很惡心的bug,就是同由一個(gè)類(lèi)生成的兩個(gè)實(shí)例之間的數(shù)據(jù)竟然會(huì)相互影響,這讓我非常不解。后來(lái)聯(lián)想到j(luò)ava的類(lèi)有類(lèi)變量也有實(shí)例變量,因此翻閱了相關(guān)資料,發(fā)現(xiàn)python也有類(lèi)似的類(lèi)變量和實(shí)例變量,下面來(lái)看看詳細(xì)的介紹。

看下面的示例代碼:

class A:
 x = 0
 def __init__(self):
 self.y = 0

x就是類(lèi)變量,y就是實(shí)例變量。

原則上是沒(méi)有錯(cuò)的,但是實(shí)際用的時(shí)候就發(fā)現(xiàn)一些惡心的問(wèn)題(也就是我找了三天的bug)。。。比如下面的代碼:

class A:
 x = []
 y = 0
 def __init__(self):
 pass
 def add(self):
 self.x.append('1')
 self.y+=1
a=A() 
print a.x,a.y
print A.x,A.y
a.add()
print a.x,a.y
print A.x,A.y
b=A() 
print b.x,b.y
print A.x,A.y

這里很明顯x和y都是類(lèi)變量,add的作用是分別對(duì)x和y做出修改。然后構(gòu)造一個(gè)實(shí)例a,對(duì)實(shí)例a的值進(jìn)行修改,最后構(gòu)造實(shí)例b。

本以為這個(gè)結(jié)果是顯而易見(jiàn)的,然而他輸出的結(jié)果卻是:

[] 0
[] 0
['1'] 1
['1'] 0
['1'] 0
['1'] 0

問(wèn)題在哪?明明x和y都是類(lèi)變量,在第二組print中為什么a.x和b.x一樣,但是a.y和b.y就是不一樣呢?

想了半天悟了一個(gè)道理。。。就是對(duì)于python來(lái)說(shuō),類(lèi)變量的確是所有類(lèi)共有的東西。但是那是在我們用的同一個(gè)引用的情況下,比如對(duì)于[]對(duì)象的append方法就是公用一個(gè)類(lèi)變量了;但是對(duì)于賦值語(yǔ)句來(lái)說(shuō),如果在類(lèi)中對(duì)類(lèi)變量使用了賦值語(yǔ)句,那么python就會(huì)生成一個(gè)該對(duì)象的副本,以后的操作都是基于這個(gè)副本而不會(huì)對(duì)原來(lái)的類(lèi)對(duì)象造成影響。這樣就解釋的通上面的現(xiàn)象了。

那么為了杜絕自己忘記類(lèi)變量和實(shí)例變量的區(qū)別導(dǎo)致本不想公用變量的時(shí)候公用了變量,最好的辦法就是在每個(gè)類(lèi)中使用變量的時(shí)候重新初始化一下,這樣就不會(huì)導(dǎo)致意外了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言和Python在數(shù)據(jù)分析方法都各有所長(zhǎng),兩者現(xiàn)在可以說(shuō)是都非常熱門(mén)的,那么這篇文章就來(lái)給大家總結(jié)介紹關(guān)于R語(yǔ)言和Python數(shù)據(jù)分析的相關(guān)資料,并給大家推薦了一些相關(guān)的書(shū)籍學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。
    2017-11-11
  • 使用keras時(shí)input_shape的維度表示問(wèn)題說(shuō)明

    使用keras時(shí)input_shape的維度表示問(wèn)題說(shuō)明

    這篇文章主要介紹了使用keras時(shí)input_shape的維度表示問(wèn)題說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • TensorFlow 滑動(dòng)平均的示例代碼

    TensorFlow 滑動(dòng)平均的示例代碼

    這篇文章主要介紹了TensorFlow 滑動(dòng)平均的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python中的腳本性能分析

    python中的腳本性能分析

    這篇文章主要介紹了python中的腳本性能分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • pandas數(shù)據(jù)的合并與拼接的實(shí)現(xiàn)

    pandas數(shù)據(jù)的合并與拼接的實(shí)現(xiàn)

    Pandas包的merge、join、concat方法可以完成數(shù)據(jù)的合并和拼接,本文主要介紹了這三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法【測(cè)試可用】

    Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法【測(cè)試可用】

    這篇文章主要介紹了Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法,結(jié)合實(shí)例形式分析了Python使用Image.blend()接口與Image.composite()接口進(jìn)行圖像合成的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python sys模塊中maxsize()方法教程示例

    Python sys模塊中maxsize()方法教程示例

    這篇文章主要為大家介紹了Python sys模塊中maxsize()方法教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析

    Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析

    這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過(guò)圖例詳細(xì)的給大家作出了講解分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Python爬蟲(chóng)之Spider類(lèi)用法簡(jiǎn)單介紹

    Python爬蟲(chóng)之Spider類(lèi)用法簡(jiǎn)單介紹

    這篇文章主要介紹了Python爬蟲(chóng)之Spider類(lèi)用法簡(jiǎn)單介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python實(shí)現(xiàn)多線程下載腳本的示例代碼

    Python實(shí)現(xiàn)多線程下載腳本的示例代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)多線程下載腳本的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論