国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 類(lèi)的屬性與實(shí)例屬性

stefan / 3038人閱讀

摘要:放假歸來(lái)一概念類(lèi)對(duì)象類(lèi)名實(shí)例對(duì)象通過(guò)類(lèi)創(chuàng)建的對(duì)象類(lèi)屬性類(lèi)對(duì)象所擁有的屬性。但是類(lèi)本身的數(shù)據(jù)屬性沒(méi)有受到影響,仍存在類(lèi)域中,可以通過(guò)類(lèi)屬性訪問(wèn)。因?yàn)橄嗤Q的實(shí)例屬性將屏蔽掉類(lèi)屬性。

放假歸來(lái) ~~~


一、概念

類(lèi)對(duì)象:類(lèi)名

實(shí)例對(duì)象:通過(guò)類(lèi)創(chuàng)建的對(duì)象

類(lèi)屬性:類(lèi)對(duì)象所擁有的屬性。歸類(lèi)所有,被類(lèi)對(duì)象和實(shí)例對(duì)象所共有。
類(lèi)的公有屬性可以在類(lèi)外被訪問(wèn)。

實(shí)例屬性:實(shí)例對(duì)象所特有的屬性,類(lèi)對(duì)象不能擁有,即不能通過(guò)類(lèi)對(duì)象調(diào)用。
實(shí)例屬性可以放在構(gòu)造方法__init__()中,也可以在創(chuàng)建實(shí)例對(duì)象后,進(jìn)行綁定。

二、舉例說(shuō)明

我們通過(guò)創(chuàng)建一個(gè)學(xué)生類(lèi)來(lái)進(jìn)行說(shuō)明。

class Student1(object):
    version = 1.0                        # 類(lèi)的公有數(shù)據(jù)屬性
    __v = 66                            # 類(lèi)的私有數(shù)據(jù)屬性
    
    # 構(gòu)造方法里的實(shí)例屬性,在類(lèi)創(chuàng)建實(shí)例時(shí)自動(dòng)被調(diào)用
    def __init__(self ,name,score):        
        self.name = name 
        self.score = score 
    
    # 類(lèi)的方法屬性,通過(guò)類(lèi)實(shí)例化對(duì)象訪問(wèn)
    def updateScore(self,new_score):    
        self.score = new_score

then,嘗試通過(guò)類(lèi)對(duì)象和實(shí)例對(duì)象來(lái)訪問(wèn)類(lèi)的公有數(shù)據(jù)屬性。對(duì)于實(shí)例沒(méi)有而類(lèi)有的屬性,會(huì)繼續(xù)查找類(lèi)的屬性。

>>> b = Student1("xlp","100")   
>>> Student1.version            # 通過(guò)類(lèi)來(lái)訪問(wèn)類(lèi)的數(shù)據(jù)屬性
1.0
>>> b.version                    # 通過(guò)類(lèi)實(shí)例訪問(wèn)類(lèi)的數(shù)據(jù)屬性,打印version屬性 
1.0                    # 因?yàn)閷?shí)例并沒(méi)有該屬性,所以會(huì)繼續(xù)查找class的version屬性 

but,當(dāng)類(lèi)屬性和實(shí)例屬性相同且混用的時(shí)候,會(huì)出現(xiàn)點(diǎn)問(wèn)題。
我們先通過(guò)類(lèi)來(lái)修改類(lèi)的數(shù)據(jù)屬性。修改后,類(lèi)和實(shí)例對(duì)象均可訪問(wèn)。

>>>Student1.version += 0.1    
>>>Student1.version         # 或者b.version
1.1

再通過(guò)類(lèi)實(shí)例對(duì)象來(lái)修改類(lèi)屬性:

>>>b.version += 0.1            # 試圖通過(guò)類(lèi)對(duì)象來(lái)修改類(lèi)屬性
>>>b.version                # 效果等同于b.version = Student.version + 0.1
1.2                 # 由于實(shí)例屬性優(yōu)先級(jí)高于類(lèi)屬性,因此會(huì)屏蔽掉類(lèi)的version屬性 1.1
>>>Student1.version 
1.1                 # 此時(shí)Student.version仍為1.1

其實(shí),在上面實(shí)例對(duì)象修改類(lèi)數(shù)據(jù)屬性時(shí),創(chuàng)建了一個(gè)名為version的新實(shí)例屬性,覆蓋了類(lèi)屬性的引用。
但是類(lèi)本身的數(shù)據(jù)屬性沒(méi)有受到影響,仍存在類(lèi)域中,可以通過(guò)類(lèi)屬性訪問(wèn)。
如果將b.version屬性進(jìn)行刪除del,之后b.version就可以重新訪問(wèn)類(lèi)數(shù)據(jù)屬性了。

>>>del b.version            # 刪除實(shí)例屬性
>>>b.version             # 由于實(shí)例的version屬性沒(méi)有找到,類(lèi)的屬性就顯示出來(lái)了
1.1

所以,實(shí)例屬性和類(lèi)屬性不要使用相同的名字。因?yàn)橄嗤Q的實(shí)例屬性將屏蔽掉類(lèi)屬性。

可以通過(guò)實(shí)例綁定、訪問(wèn)實(shí)例的屬性,舉例說(shuō)明:

>>> b.name                    
"xlp"
>>>b.updateSocore(100)        # 通過(guò)實(shí)例訪問(wèn)類(lèi)方法屬性
>>>b.score
100

但是,但是,但是,當(dāng)類(lèi)數(shù)據(jù)屬性為可變對(duì)象時(shí),比如dict類(lèi)型,情況又會(huì)有點(diǎn)不一樣了。例如:

當(dāng)類(lèi)屬性為可變對(duì)象時(shí),通過(guò)實(shí)例對(duì)象來(lái)修改類(lèi)屬性時(shí),會(huì)修改類(lèi)屬性,且在刪除實(shí)例屬性時(shí)會(huì)報(bào)錯(cuò)。
所以,使用類(lèi)對(duì)象來(lái)修改類(lèi)屬性,不要使用實(shí)例對(duì)象來(lái)修改類(lèi)屬性。


? thanks for watching, keep on updating...
點(diǎn)個(gè)贊再走吧

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42619.html

相關(guān)文章

  • python中創(chuàng)建對(duì)象(object)

    摘要:實(shí)例變量與類(lèi)變量事實(shí)上,字段除了獨(dú)屬于實(shí)例之外,跟普通變量沒(méi)有什么差別,所以實(shí)例的字段也被稱為實(shí)例變量。在類(lèi)的定義中,與實(shí)例變量對(duì)應(yīng)的還有類(lèi)變量,類(lèi)變量與實(shí)例變量類(lèi)似,通過(guò)操作符來(lái)訪問(wèn)。類(lèi)變量跟類(lèi)的方法都可以被稱為類(lèi)的成員。 該系列文章: 《python入門(mén),編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))》 《python中的數(shù)據(jù)類(lèi)型(list,tuple,dict,set,None)》...

    freewolf 評(píng)論0 收藏0
  • python基礎(chǔ)教程:類(lèi)

    摘要:類(lèi)對(duì)象被創(chuàng)建時(shí)存在于類(lèi)命名空間內(nèi)的所有名稱都是有效的屬性名稱。類(lèi)的實(shí)例化,是使用函數(shù)表示法,可以把類(lèi)對(duì)象看做是會(huì)返回一個(gè)新的類(lèi)實(shí)例的函數(shù)。這就是可變對(duì)象作為類(lèi)變量時(shí)的特性。類(lèi)變量是所有類(lèi)的實(shí)例共享的屬性和方法,實(shí)例變量是每個(gè)實(shí)例獨(dú)有的數(shù)據(jù)。 Python是面向?qū)ο蟮母呒?jí)編程語(yǔ)言,在Python里面一切都是對(duì)象:數(shù)字、字符串、元組、列表、字典、集合等內(nèi)置數(shù)據(jù)類(lèi)型,以及函數(shù)、方法、類(lèi)、模塊...

    fish 評(píng)論0 收藏0
  • Python OOP 面向?qū)ο缶幊?/b>

    摘要:時(shí)代,如果需要手動(dòng)繼承,如多態(tài)多態(tài)是指,不同的子類(lèi)對(duì)象調(diào)用相同的父類(lèi)方法,會(huì)產(chǎn)生多態(tài)多樣結(jié)果的編程特性。 參考:黑馬程序員教程 - Python基礎(chǔ) 面向?qū)ο?OOP三大特性,且三個(gè)特性是有順序的: 封裝 繼承 多態(tài) 封裝 指的就是把現(xiàn)實(shí)世界的事務(wù),封裝、抽象成編程里的對(duì)象,包括各種屬性和方法。這個(gè)一般都很簡(jiǎn)單,不需要多講。 唯一要注意的就是:推薦從小往大開(kāi)始封裝、開(kāi)發(fā)類(lèi)。比如手槍...

    weknow619 評(píng)論0 收藏0
  • Python方法(二) - 類(lèi)繼承

    摘要:在類(lèi)內(nèi)部的方法中使用時(shí)。類(lèi)的私有方法兩個(gè)下劃線開(kāi)頭,聲明該方法為私有方法,不能在類(lèi)地外部調(diào)用。先在本類(lèi)中查找調(diào)用的方法,找不到才去基類(lèi)中找。如果在繼承元組中列了一個(gè)以上的類(lèi),那么它就被稱作多重繼承。 類(lèi)定義 類(lèi)對(duì)象:創(chuàng)建一個(gè)類(lèi)之后,可以通過(guò)類(lèi)名訪問(wèn)、改變其屬性、方法 實(shí)例對(duì)象:類(lèi)實(shí)例化后,可以使用其屬性,可以動(dòng)態(tài)的為實(shí)例對(duì)象添加屬性(類(lèi)似javascript)而不影響類(lèi)對(duì)象。 類(lèi)...

    DevWiki 評(píng)論0 收藏0
  • Python 3 入門(mén),看這篇就夠了

    摘要:縮進(jìn)不一致,會(huì)導(dǎo)致運(yùn)行錯(cuò)誤。變量變量在使用前必須先定義即賦予變量一個(gè)值,否則會(huì)報(bào)錯(cuò)數(shù)據(jù)類(lèi)型布爾只有和兩個(gè)值,表示真或假。 簡(jiǎn)介 Python 是一種高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。Python 由 Guido van Rossum 于 1989 年底在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于 1991 年。 特點(diǎn) 易于學(xué)習(xí):Python ...

    Shimmer 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<