【Python】實例查找屬性的順序

# coding: utf-8


class A(object):
    a = "A.class"

    def __init__(self):
        self.a = "A.instance"
        pass

    def __getattribute__(self, item):
        return "A.__getattribute__"

    def __getattr__(self, item):
        return "A.__getattr__"


class B(A):
    a = "B.class"

    def __init__(self):
        super(B, self).__init__()
        self.a = "B.instance"
        pass

    def __getattribute__(self, item):
        return "B.__getattribute__"

    def __getattr__(self, item):
        return "B.__getattr__"

inst = B()

print inst.a

子類父類所有獲取屬性的方法都在時,最先調(diào)用的是當(dāng)前類的__getattribute__方法,依次注釋當(dāng)前調(diào)用到的方法,查看下一個調(diào)用的方法是什么,出現(xiàn)的順序如下所示:

  • B.__getattribute__
  • A.__getattribute__
  • B.instance
  • A.instance
  • B.class
  • A.class
  • B.__getattr__
  • A.__getattr__
  • AttributeError: 'B' object has no attribute 'a'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,220評論 0 9
  • 人生苦短我用 Python 注:最后附電子書地址 一、Pythonic Thinking 第1條: 確認(rèn)自己所用的...
    molscar閱讀 2,203評論 0 3
  • 簡介 Python 中,一切皆對象。 當(dāng)我們訪問某個對象屬性時,在不同的情況下,Python 對屬性的訪問機制有所...
    Whyn閱讀 1,461評論 1 3
  • 9月11日,小米舉辦新品發(fā)布會,會上共發(fā)布了第二代全面屏手機小米MIX 2,小米Note 3和小米筆記本Pro。本...
    3C菜鳥閱讀 420評論 0 0
  • 其實我差不多能夠猜到你為什么請我吃飯。就算不請我吃飯,我依然會像以前一樣不遺余力地幫你,這是毫無疑問的事情。除去其...
    _簡簡單單閱讀 239評論 0 0

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