第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Python中私有和受保護(hù)方法的繼承

Python中私有和受保護(hù)方法的繼承

動漫人物 2019-11-13 15:37:37
我知道,Python中沒有“真正的”私有/受保護(hù)的方法。這種方法并不意味著要隱藏任何東西。我只想了解Python的功能。class Parent(object):    def _protected(self):        pass    def __private(self):        passclass Child(Parent):    def foo(self):        self._protected()   # This works    def bar(self):        self.__private()    # This doesn't work, I get a AttributeError:                            # 'Child' object has no attribute '_Child__private'那么,這種行為是否意味著“受保護(hù)”的方法將被繼承,但“私有”的方法將不會被繼承呢?還是我錯(cuò)過了什么?
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

將double __屬性更改為_ClassName__method_name,使其比隱含的語義隱私更加私有_method_name。


如果您確實(shí)愿意,從技術(shù)上講您仍然可以使用它,但是大概沒人會這樣做,因此出于維護(hù)代碼抽象的原因,該方法在那時(shí)也可能是私有的。


class Parent(object):

    def _protected(self):

        pass


    def __private(self):

        print("Is it really private?")


class Child(Parent):

    def foo(self):

        self._protected()


    def bar(self):

        self.__private()


c = Child()

c._Parent__private()

這具有允許方法不與子類方法名稱沖突的其他好處(或有人說主要的好處)。


查看完整回答
反對 回復(fù) 2019-11-13
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

另外PEP8說


僅對非公共方法和實(shí)例變量使用前導(dǎo)下劃線。


為避免名稱與子類沖突,請使用兩個(gè)前導(dǎo)下劃線來調(diào)用Python的名稱處理規(guī)則。


Python將這些名稱與類名稱混為一談:如果class Foo具有名為的屬性__a,則不能通過進(jìn)行訪問Foo.__a。(堅(jiān)持的用戶仍然可以通過調(diào)用獲得訪問權(quán)限Foo._Foo__a。)通常,雙引號下劃線僅應(yīng)用于避免名稱與設(shè)計(jì)為子類的類中的屬性發(fā)生沖突。


_such_methods按照慣例,您也應(yīng)該遠(yuǎn)離。我的意思是你應(yīng)該把他們當(dāng)成private


查看完整回答
反對 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 1021 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號