python私有屬性

'''
訪問(wèn)私有屬性
判斷是否是該類型:isinstance(10,str)
'''
class Money(object):
    def __init__(self):
        self.__money = 0

    def getMoney(self):
        return self.__money

    def setMoney(self, value):
        #判斷value的值是不是整型
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型數(shù)字")

m1 = Money()
print(m1.getMoney())
m1.setMoney(100)
print(m1.getMoney())
m1.setMoney('i')

結(jié)果如下:


訪問(wèn)私有屬性結(jié)果.jpg

私有的屬性,為了對(duì)外能訪問(wèn),提供了對(duì)外訪問(wèn)的set和get方法。但是對(duì)于使用的時(shí)候略顯繁瑣,使用ret = property(get,set)
當(dāng)對(duì)象獲取ret時(shí),相當(dāng)于調(diào)用get方法,當(dāng)對(duì)象設(shè)置ret時(shí),相當(dāng)于調(diào)用set,將設(shè)置的值傳給set的方法作為實(shí)參。

class Money(object):
    def __init__(self):
        self.__money = 0

    def getMoney(self):
        return self.__money

    def setMoney(self, value):
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型數(shù)字")
    money = property(getMoney, setMoney)

m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)

結(jié)果如下:

property結(jié)果1.jpg

property第二種表示方法:

class Money(object):
    def __init__(self):
        self.__money = 0
    @property
    def money(self):
        return self.__money
    @money.setter
    def money(self, value):
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型數(shù)字")


m1 = Money()
print(m1.money)
m1.money = 100
print(m1.money)

結(jié)果如下:

property結(jié)果2.jpg

@property成為屬性函數(shù),可以對(duì)屬性賦值時(shí)做必要的檢查,并保證代碼的清晰短小,主要有2個(gè)作用
1、將方法轉(zhuǎn)換為只讀
2、重新實(shí)現(xiàn)一個(gè)屬性的設(shè)置和讀取方法,可做邊界判定

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • classDog: def__init__(self): #私有屬性,以雙下劃線開(kāi)頭,這樣就沒(méi)法以點(diǎn)的形式訪問(wèn)了 ...
    miniminiming閱讀 415評(píng)論 0 0
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,422評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,706評(píng)論 18 399
  • 新約聖經(jīng)馬太福音第5章39節(jié),耶穌有一個(gè)令人費(fèi)解的教導(dǎo):「只是我告訴你們,不要與惡人作對(duì)。有人打你的右臉,連左...
    郭長(zhǎng)介閱讀 675評(píng)論 0 2

友情鏈接更多精彩內(nèi)容