中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談類及對象的字段和方法

發布時間:2020-08-10 23:41:45 來源:網絡 閱讀:396 作者:lvsir666 欄目:編程語言

類:

類是某種類型集合的描述。

我們把擁有相同屬性的事務叫做類,里面封裝了相同的方法。比如人,汽車等。


對象:

對象是由類創建的實例。對象的三個特性:身份,類型,值,在這里不做描述。


類的私有屬性及訪問方式:

外部想要訪問類的私有屬性有兩種方式:

1:類內創建一個函數,來返回私有屬性

2:類特性


對象的私有字段:

創建一個類如下:

class Province:

    memo = "中國的23個省之一"   #是類的字段,是屬于類的,不屬于對象,這個屬于類的靜態字段,屬于類

    def __init__(self,name,captial,leader,flag):

        self.Name=name              #通過self創建的字段叫做動態字段,不像靜態字段,動態字段屬于對象

        self.Captial=captial

        self.Leader=leader

        self.__happy = flag      #創建對象的私有字段
XZ=Province("西藏","烏魯木齊","×××",True)   #實例化類,就是創建了個對象
print XZ.Captial
print XZ.__happy

執行結果如下:

Traceback (most recent call last):

  File "F:\lvsir\workspace\pystudy-oldboy\oop\privat_filld.py", line 47, in <module>

烏魯木齊

    print XZ.__happy

AttributeError: Province instance has no attribute '__happy'

此例可見,私有字段是外部不可直接訪問的;外部若想訪問對象的私有字段,可以再在類中創建一個函數,來顯示私有字段,代碼如下:

class Province:
    ...
    ...
    def show(self):             #在類中創建一個查看實例私有字段的方法

        return self.__happy
XZ=Province("西藏","烏魯木齊","×××",True)
print XZ.show()   #調用show方法

執行結果如下:

True

 


還是上面的例子,添加私有方法代碼如下:

class Province:

    ...

    ...
    def __Hello(self):           #定義私有方法,直接使用類實例是訪問不到的,在類中可以訪問的到

        print "Hello,world"
    def access_hello(self):    #創建一個訪問私有方法的函數

        print self.__Hello()
XZ=Province("西藏","烏魯木齊","×××",True)
print XZ.__Hello

直接訪問對象的私有方法,執行結果如下:

Traceback (most recent call last):

  File "F:\lvsir\workspace\pystudy-oldboy\oop\privat_filld.py", line 49, in <module>

    print XZ.__Hello

AttributeError: Province instance has no attribute '__Hello'


使用第一種方法訪問私有方法

print XZ.access_hello()     #調用類實例的訪問私有方法的函數
Hello,world

由上可見,類的私有方法對象是不能直接訪問的,也可以通過類內可訪問私有方法的方法間接訪問

 


使用類特性訪問私有方法:

class Province:


    ...


    ...
    @property                  #創建類特性,返回私有方法

    def Hello(self):

        return self.__Hello()
XZ=Province("西藏","烏魯木齊","×××",True)
print XZ.Hello            #直接調用類特性,以字段的方式訪問,不需要帶括號

執行結果如下:

Hello,world


類的私有字段的只讀和只寫

我們創建一個新類,代碼如下:

class Province1:
    def __init__(self,name,flag):
        self.name=name
        self.__Hello = flag
    
    @property                 #只讀的私有字段,是可以訪問的,但是不能修改
    def Heloo(self):
        return self.__Hello
TW = Province1('臺灣',True)

print TW.Heloo

TW.Heloo=False

print TW.Heloo

執行結果如下:

True

Traceback (most recent call last):

  File "F:\lvsir\workspace\pystudy-oldboy\oop\privat_filld.py", line 76, in <module>

    TW.Heloo=False

AttributeError: can't set attribute

是可以讀到私有字段的,但是不能修改

下面添加代碼,是私有字段可以訪問并且可寫,前提是類要繼承object,代碼如下:

class Province1(object):
    def __init__(self,name,flag):
        self.name=name
        self.__Hello = flag
    
    @property                 #只讀的私有字段,是可以訪問的,但是不能修改
    def Heloo(self):
        return self.__Hello
    @Heloo.setter             #可改的私有字段,可以訪問,也可以修改,可以的私有字段的類要繼承object
    def Heloo(self,value):
        self.__Hello=value
TW = Province1('臺灣',True)

print TW.Heloo

TW.Heloo=False

print TW.Heloo

執行結果如下:

True

False

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金溪县| 乌海市| 理塘县| 运城市| 罗山县| 建德市| 长海县| 特克斯县| 大邑县| 嵊泗县| 永平县| 乃东县| 万年县| 安顺市| 内丘县| 南川市| 广昌县| 三河市| 贵州省| 三门县| 固阳县| 湘乡市| 新宁县| 南投县| 宁安市| 永州市| 曲靖市| 宕昌县| 沅陵县| 镇平县| 濮阳市| 惠来县| 天峨县| 化州市| 清新县| 寻乌县| 太和县| 克东县| 托克逊县| 永仁县| 平安县|