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

資訊專欄INFORMATION COLUMN

私有化規則與屬性Property

whjin / 1258人閱讀

摘要:上一篇文章裝飾器真正入門的鑒定標準下一篇文章垃圾回收詳解私有化變量定義規則變量形式解讀公有變量單前置下劃線,私有化屬性或方法,禁止導入,類對象和子類進可以訪問。雙前置下劃線,避免與子類中的屬性命名沖突,無法再在外部直接訪問。

上一篇文章:Python裝飾器:python真正入門的鑒定標準
下一篇文章:Python垃圾回收詳解
1、私有化

變量定義規則

變量形式 解讀
xx 公有變量xx
_xx 單前置下劃線,私有化屬性或方法,from somemodule import *禁止導入,類對象和子類進可以訪問。
__xx 雙前置下劃線,避免與子類中的屬性命名沖突,無法再在外部直接訪問。
__xx__ 雙前后下劃線,python自定義使用的的屬性或者方法名稱,例如__init__,不要自定義這種名稱的變量
x_ 單后置下劃線,避免與Python關鍵詞沖突
2、屬性Property

私有屬性添加getter和setter方法

實例:

class Man():
    def __init__(self):
        self.__age=18
    def getAge(self):
        return self.__age
    def setAge(self,value):
        #isinstance用來判斷一個對象是不是指定類型
        #下面語句就是用來判斷value是不是int類型
        if isinstance(value,int):
            self.__age=value
        else:
            print("輸入的年齡不是整數")

if __name__=="__main__":
    mark=Man()

    mark.setAge("xxx")
    print(mark.getAge())
    mark.setAge(20)
    print(mark.getAge())

    #下面一句會報錯
    #print(mark.age)

結果:

輸入的年齡不是整數
18
20

使用property升級getter和setter方法

實例:

class Man():
    def __init__(self):
        self.__age = 18

    def getAge(self):
        return self.__age

    def setAge(self, value):
        # isinstance用來判斷一個對象是不是指定類型
        # 下面語句就是用來判斷value是不是int類型
        if isinstance(value, int):
            self.__age = value
        else:
            print("輸入的年齡不是整數")
    age=property(getAge,setAge)


if __name__ == "__main__":
    mark = Man()

    mark.age="xxx"
    print(mark.age)
    mark.age=20
    print(mark.age)

結果:

輸入的年齡不是整數
18
20

使用property取代getter和setter方法

實例:

class Man():
    def __init__(self):
        self.__age = 18

    @property
    def age(self):
        return self.__age
    @age.setter
    def age(self,value):
        # isinstance用來判斷一個對象是不是指定類型
        # 下面語句就是用來判斷value是不是int類型
        if isinstance(value, int):
            self.__age = value
        else:
            print("輸入的年齡不是整數")


if __name__ == "__main__":
    mark = Man()

    mark.age="xxx"
    print(mark.age)
    mark.age=20
    print(mark.age)

結果:

輸入的年齡不是整數
18
20

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42260.html

相關文章

  • Python中的動態屬性和特性

    摘要:一利用動態屬性處理數據源屬性在中,數據的屬性和處理數據的方法統稱屬性。處理無效屬性名在中,由于關鍵字被保留,名稱為關鍵字的屬性是無效的。內置函數列出對象的大多數屬性。點號和內置函數會觸發這個方法。 導語:本文章記錄了本人在學習Python基礎之元編程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、了解如何利用動態屬性處理數據;2、掌握Pyth...

    scola666 評論0 收藏0
  • @ConfigurationProperties 注解使用姿勢,這一篇就夠了

    摘要:在項目中,為滿足以上要求,我們將大量的參數配置在或文件中,通過注解,我們可以方便的獲取這些參數值使用配置模塊假設我們正在搭建一個發送郵件的模塊。這使得在不影響其他模塊的情況下重構一個模塊中的屬性變得容易。 在編寫項目代碼時,我們要求更靈活的配置,更好的模塊化整合。在 Spring Boot 項目中,為滿足以上要求,我們將大量的參數配置在 application.properties 或...

    SolomonXie 評論0 收藏0
  • @ConfigurationProperties 注解使用姿勢,這一篇就夠了

    摘要:在項目中,為滿足以上要求,我們將大量的參數配置在或文件中,通過注解,我們可以方便的獲取這些參數值使用配置模塊假設我們正在搭建一個發送郵件的模塊。這使得在不影響其他模塊的情況下重構一個模塊中的屬性變得容易。 在編寫項目代碼時,我們要求更靈活的配置,更好的模塊化整合。在 Spring Boot 項目中,為滿足以上要求,我們將大量的參數配置在 application.properties 或...

    KoreyLee 評論0 收藏0
  • 從ES6重新認識JavaScript設計模式(五): 代理模式和Proxy

    摘要:此時,鏈家起到的作用就是代理的作用。驗證代理構造函數第二個參數中的方法,可以很方便的驗證向一個對象的傳值。 1 什么是代理模式 showImg(https://segmentfault.com/img/remote/1460000015800706?w=1262&h=464); 為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理...

    verano 評論0 收藏0
  • JavaScript 為什么要有 Symbol 類型

    摘要:也有類似的概念,它是根據傳遞的數據類型推斷的。這個特性的名稱被稱為私有字段,雖然這不會使所有對象受益,但會使類實例的對象受益。警告中有一個功能會破壞代理的隱私。 showImg(https://segmentfault.com/img/bVbpL6y?w=800&h=456); Symbols 是 ES6 引入了一個新的數據類型 ,它為 JS 帶來了一些好處,尤其是對象屬性時。 但是,...

    lemanli 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<