美文网首页
【Python】实例查找属性的顺序

【Python】实例查找属性的顺序

作者: lndyzwdxhs | 来源:发表于2019-07-28 16:44 被阅读0次
    # 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
    
    

    子类父类所有获取属性的方法都在时,最先调用的是当前类的__getattribute__方法,依次注释当前调用到的方法,查看下一个调用的方法是什么,出现的顺序如下所示:

    • B.__getattribute__
    • A.__getattribute__
    • B.instance
    • A.instance
    • B.class
    • A.class
    • B.__getattr__
    • A.__getattr__
    • AttributeError: 'B' object has no attribute 'a'

    相关文章

      网友评论

          本文标题:【Python】实例查找属性的顺序

          本文链接:https://www.haomeiwen.com/subject/rnlprctx.html