引言前面的文章提及, 继承关系里, 特别是多继承时, 有一个对象属性的查找解析顺序。当时语境因聚焦继承关系, 仅简要说到属性解析顺序与方法解析顺序, 那个方法解析顺序, 基于 C3 算法实现, 具体的解析顺序, 能从属性或者 mro()方法获取。然而, 我们已然介绍了更多面向对象方面的内容, 特别是在引入及属性描述符之后便是如此, 只是应用 MRO 好像有些不太够用了。所以, 笔者计划借两篇文章之篇幅对“对象属性解析”展开扩充阐述, 以求对属性解析的底层逻辑获致更为明晰的认知, 进而能在运用面向对象时更加驾轻就熟。在这篇文章里头, 我们先回过头去看看处于继承环境之中的, 有关属性解析顺序的那些内容, 接着再补充三个跟对象属性解析所牵扯到的函数或者方法, 借此进一步去剖析属性解析的触发机制。继承语境中的属性解析顺序首先, 我们要对继承语境內财产剖析先后次序展开一回回顾, 对于此剖析先后次序的领会属于根基范畴同时也是极为关键性质所属层面上很重要的内容, 因而, 必定得娴熟掌控。这一默认的剖析先后次序被列示如下:1、查找实例属性, 首先, 要先在实例对象的命名空间里开展属性的查找, 要是找到了, 那就直接去访问该属性不然的话, 便径直进入下一个查找步骤。2、查找实例所歸屬的類的類屬性, 要是在實例之中未尋找到相關屬性, 那便會在類的命名空間之中加以查找。同樣的, 要是找尋到了, 那就直接訪問該類屬性, 不然就展開下一步查找。3、若果于实例对象所属的类里没能找到基类属性, 将依照MRO, 也就是方法解析顺序, 在基类中依次逐一进行查找, 一旦找到便直接访问那该项属性。要是最终果真未寻觅到, 那就会报错。接下来我们通过代码来进行验证class DaGongRen: count 0 def __init__(self, name): self.name name DaGongRen.count 1 class Programmer(DaGongRen): count 0 def __init__(self, name, gender): super().__init__(name) self.gender gender Programmer.count 1 class ProductManager(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender if __name__ __main__: coder Programmer(张三, 女) pm ProductManager(李四, 女) print(coder.__dict__) print(pm.__dict__) print(Programmer.__dict__) print(ProductManager.__dict__) print(DaGongRen.__dict__) # 实例属性从实例对象的命名空间也就是__dict__字典中获取 print(coder.name) print(pm.name) # 类属性实例命名空间无该属性但是实例所属类中有该类属性 print(coder.count) # 基类属性实例命名空间没有实例所属类中也无基于MRO到基类中查找 print(pm.count)执行结果从代码从执行结果可知1、name属性存在于实例对象的命名范畴内里, 那么, 径直从其中去取得并返回。2、“count”属性于具体的实例对象的命名空间里面不存在, 因而要进行更深层次的查找。3、存在于coder所对应的类里, 有着count这般的类属性, 因而直接去返回1。4、存在于pm所对应的类里面的、count这样的类属性是不存在的, 得进一步针对此去基类那儿查找。5、pm.count最终在的类属性中获取到返回2。3个函数/方法当我们借助实例对象去访问属性之际, 得依照对象的解析顺序来展开查找, 这其中会牵涉到几个函数或者方法, 并且仅仅是从名称方面端详, 极易造成混淆的是3个函数或者方法。1、(obj, attr)内置函数在我们借助实例对象以“点”这种方式去访问属性之际, 实际上存在着一个与之等价的内置函数用于进行实例对象有关属性的访问, 具体就是()。与“点”操作符相比较而言, ()函数额外还具备了属性默认值这样的功能, 换句话讲, 要是所访问的属性并没存在, 那么就返回默认值, 而并非是抛出来。仍是先前的代码, 我们借由“点”操作符, 以及内置函数(), 各自展开属性的访问尝试, 能够见到如下这般的执行结果:2、()魔术方法当对实例对象的属性开展访问操作时, 最先必定会去调用()这个魔术方法来实施统一的处理, 借由这个方法去进行属性查找顺序的解析, 要是查找不到就会抛出异常, 在这个时候, 倘若定义了()方法, 那么依旧会调用该方法。这里当下不会开展代码演示, 最终会借由一个完整用到三个函数的代码示例予以阐释。3、()魔术方法此那般魔术方法仅仅于访问属性遭遇失败之际才经由括号予以调用, 换句话讲也是可以这么说的, 唯有当个属性于某实例亦或某类、还有就是那一基类里头查找寻求寻而不得之时才会促使其被触发。而当期望为那并不存在的属性给出某种默认的行为表现, 又或者是针对于动态属性而言的时候, 是能够去考虑运用括号方法的。在优先这种情况方面对比于括号内置函数的默认之值的一系列逻辑而言。class DaGongRen: count 0 def __init__(self, name): self.name name DaGongRen.count 1 class Programmer(DaGongRen): count 0 def __init__(self, name, gender): super().__init__(name) self.gender gender Programmer.count 1 def __getattr__(self, item): print(f属性{item}不存在) return None if __name__ __main__: coder Programmer(张三, 女) # 最终通过__getattr__方法返回了None所以不会走getattr的默认值逻辑 print(getattr(coder, age, 18)) # __getattr__方法返回了None不会抛AttributeError print(coder.age)执行结果最终, 我们来瞧一瞧把3个方法或者函数放置在一起的那种完整的代码示例情形: 。class DaGongRen: def __init__(self, name): self.name name class Programmer(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender def __getattribute__(self, item): print(f尝试访问属性{item}) super().__getattribute__(item) def __getattr__(self, item): print(f属性{item}不存在) return None class ProductManager(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender def __getattribute__(self, item): print(f尝试访问属性{item}) super().__getattribute__(item) if __name__ __main__: coder Programmer(张三, 女) pm ProductManager(李四, 女) # 最终通过__getattr__方法返回了None所以不会走getattr的默认值逻辑 print(以下访问同时有__getattribute__和__getattr__) print(getattr(coder, age, 18)) # __getattr__方法返回了None不会抛AttributeError print(coder.age) print(以下访问有__getattribute__无__getattr__) print(getattr(pm, age, 18)) print(pm.age)执行结果从代码和执行结果可以看出1、访问任意一个属性之际, 最先都会调用()方法, 不论属性是否存在, 此方法都会被触发, 所以, 要是需要针对所有的属性访问实施统一的处理之时, 能够在该方法里增添处理逻辑, 不过, 需要留意的是要谨慎规避递归访问的情形, 通常应当调用super()的()来开展相关的后续属性解析处理, 不然可能致使属性解析出现异常。2、采用的这种方法, 当属性处于不存在的状况之时, 是会被另外一种方法予以调用。而且其具备的优先级, 又是高于既定当中的默认值处理逻辑呢。3、倘若进行了以及的自定义操作的话, 便会觉察到在属性的解析顺序之中MRO解析顺序极有可能会遭受阻断。因而, 在一般情形之下, 是不应当随意去重写的。总结针对实例对象属性解析来讲, 本文对继承里的属性解析属性之时再次进行了查看, 而且增添了能够对属性解析行为产生影响的三个函数或方法呢当引入属性描述符之际, 属性的解析顺序会愈发复杂, 对于这部分内容, 我们于下一篇文章里持续铺展。感谢您抽出时间来阅读, 要是这个文本对您的学习能起到一定的助力作用, 那么欢迎您进行点赞以及收藏。WWw.m.Mbma.cN/Article/details/06171.shtmlWWw.m.Mbma.cN/Article/details/84533.shtmlWWw.m.Mbma.cN/Article/details/86993.shtmlWWw.m.Mbma.cN/Article/details/53741.shtmlWWw.m.Mbma.cN/Article/details/35175.shtmlWWw.m.Mbma.cN/Article/details/62934.shtmlWWw.m.Mbma.cN/Article/details/02407.shtmlWWw.m.Mbma.cN/Article/details/12456.shtmlWWw.m.Mbma.cN/Article/details/10379.shtmlWWw.m.Mbma.cN/Article/details/21338.shtmlWWw.m.Mbma.cN/Article/details/69648.shtmlWWw.m.Mbma.cN/Article/details/81011.shtmlWWw.m.Mbma.cN/Article/details/07908.shtmlWWw.m.Mbma.cN/Article/details/12023.shtmlWWw.m.Mbma.cN/Article/details/92699.shtmlWWw.m.Mbma.cN/Article/details/90642.shtmlWWw.m.Mbma.cN/Article/details/74254.shtmlWWw.m.Mbma.cN/Article/details/93559.shtmlWWw.m.Mbma.cN/Article/details/42727.shtmlWWw.m.Mbma.cN/Article/details/57473.shtmlWWw.m.Mbma.cN/Article/details/16265.shtmlWWw.m.Mbma.cN/Article/details/65882.shtmlWWw.m.Mbma.cN/Article/details/40869.shtmlWWw.m.Mbma.cN/Article/details/44109.shtmlWWw.m.Mbma.cN/Article/details/81538.shtmlWWw.m.Mbma.cN/Article/details/32194.shtmlWWw.m.Mbma.cN/Article/details/92648.shtmlWWw.m.Mbma.cN/Article/details/83393.shtmlWWw.m.Mbma.cN/Article/details/56131.shtmlWWw.m.Mbma.cN/Article/details/70476.shtmlWWw.m.Mbma.cN/Article/details/58069.shtmlWWw.m.Mbma.cN/Article/details/98787.shtmlWWw.m.Mbma.cN/Article/details/49354.shtmlWWw.m.Mbma.cN/Article/details/05784.shtmlWWw.m.Mbma.cN/Article/details/03910.shtmlWWw.m.Mbma.cN/Article/details/24309.shtmlWWw.m.Mbma.cN/Article/details/73461.shtmlWWw.m.Mbma.cN/Article/details/87174.shtmlWWw.m.Mbma.cN/Article/details/01128.shtmlWWw.m.Mbma.cN/Article/details/43352.shtmlWWw.m.Mbma.cN/Article/details/96271.shtmlWWw.m.Mbma.cN/Article/details/87505.shtmlWWw.m.Mbma.cN/Article/details/29750.shtmlWWw.m.Mbma.cN/Article/details/07546.shtmlWWw.m.Mbma.cN/Article/details/42686.shtmlWWw.m.Mbma.cN/Article/details/69282.shtmlWWw.m.Mbma.cN/Article/details/55992.shtmlWWw.m.Mbma.cN/Article/details/87545.shtmlWWw.m.Mbma.cN/Article/details/86684.shtmlWWw.m.Mbma.cN/Article/details/40948.shtmlWWw.m.Mbma.cN/Article/details/73786.shtmlWWw.m.Mbma.cN/Article/details/36242.shtmlWWw.m.Mbma.cN/Article/details/81361.shtmlWWw.m.Mbma.cN/Article/details/94642.shtmlWWw.m.Mbma.cN/Article/details/32557.shtmlWWw.m.Mbma.cN/Article/details/08627.shtmlWWw.m.Mbma.cN/Article/details/35683.shtmlWWw.m.Mbma.cN/Article/details/37536.shtmlWWw.m.Mbma.cN/Article/details/83646.shtmlWWw.m.Mbma.cN/Article/details/18496.shtmlWWw.m.Mbma.cN/Article/details/73933.shtmlWWw.m.Mbma.cN/Article/details/98898.shtmlWWw.m.Mbma.cN/Article/details/91133.shtmlWWw.m.Mbma.cN/Article/details/97663.shtmlWWw.m.Mbma.cN/Article/details/59608.shtmlWWw.m.Mbma.cN/Article/details/97010.shtmlWWw.m.Mbma.cN/Article/details/80414.shtmlWWw.m.Mbma.cN/Article/details/58418.shtmlWWw.m.Mbma.cN/Article/details/66891.shtmlWWw.m.Mbma.cN/Article/details/38414.shtmlWWw.m.Mbma.cN/Article/details/54080.shtmlWWw.m.Mbma.cN/Article/details/20017.shtmlWWw.m.Mbma.cN/Article/details/45132.shtmlWWw.m.Mbma.cN/Article/details/25283.shtmlWWw.m.Mbma.cN/Article/details/93095.shtmlWWw.m.Mbma.cN/Article/details/56694.shtmlWWw.m.Mbma.cN/Article/details/72978.shtmlWWw.m.Mbma.cN/Article/details/84372.shtmlWWw.m.Mbma.cN/Article/details/57862.shtmlWWw.m.Mbma.cN/Article/details/06731.shtmlWWw.m.Mbma.cN/Article/details/62119.shtmlWWw.m.Mbma.cN/Article/details/85779.shtmlWWw.m.Mbma.cN/Article/details/21636.shtmlWWw.m.Mbma.cN/Article/details/00371.shtmlWWw.m.Mbma.cN/Article/details/20758.shtmlWWw.m.Mbma.cN/Article/details/84858.shtmlWWw.m.Mbma.cN/Article/details/84793.shtmlWWw.m.Mbma.cN/Article/details/33774.shtmlWWw.m.Mbma.cN/Article/details/47705.shtmlWWw.m.Mbma.cN/Article/details/61813.shtmlWWw.m.Mbma.cN/Article/details/97304.shtmlWWw.m.Mbma.cN/Article/details/88398.shtmlWWw.m.Mbma.cN/Article/details/37917.shtmlWWw.m.Mbma.cN/Article/details/98637.shtmlWWw.m.Mbma.cN/Article/details/15522.shtmlWWw.m.Mbma.cN/Article/details/83456.shtmlWWw.m.Mbma.cN/Article/details/32896.shtmlWWw.m.Mbma.cN/Article/details/18344.shtmlWWw.m.Mbma.cN/Article/details/17417.shtmlWWw.m.Mbma.cN/Article/details/19495.shtmlWWw.m.Mbma.cN/Article/details/37222.shtmlWWw.m.Mbma.cN/Article/details/01683.shtmlWWw.m.Mbma.cN/Article/details/94525.shtmlWWw.m.Mbma.cN/Article/details/19715.shtmlWWw.m.Mbma.cN/Article/details/53018.shtmlWWw.m.Mbma.cN/Article/details/78239.shtmlWWw.m.Mbma.cN/Article/details/27607.shtmlWWw.m.Mbma.cN/Article/details/83289.shtmlWWw.m.Mbma.cN/Article/details/52732.shtmlWWw.m.Mbma.cN/Article/details/06227.shtmlWWw.m.Mbma.cN/Article/details/52718.shtmlWWw.m.Mbma.cN/Article/details/31970.shtmlWWw.m.Mbma.cN/Article/details/27577.shtmlWWw.m.Mbma.cN/Article/details/31886.shtmlWWw.m.Mbma.cN/Article/details/57617.shtmlWWw.m.Mbma.cN/Article/details/98561.shtmlWWw.m.Mbma.cN/Article/details/30957.shtmlWWw.m.Mbma.cN/Article/details/46897.shtmlWWw.m.Mbma.cN/Article/details/67937.shtmlWWw.m.Mbma.cN/Article/details/50344.shtmlWWw.m.Mbma.cN/Article/details/45773.shtmlWWw.m.Mbma.cN/Article/details/20917.shtmlWWw.m.Mbma.cN/Article/details/83793.shtmlWWw.m.Mbma.cN/Article/details/47896.shtmlWWw.m.Mbma.cN/Article/details/54127.shtmlWWw.m.Mbma.cN/Article/details/73095.shtmlWWw.m.Mbma.cN/Article/details/84939.shtmlWWw.m.Mbma.cN/Article/details/16825.shtmlWWw.m.Mbma.cN/Article/details/65344.shtmlWWw.m.Mbma.cN/Article/details/59814.shtmlWWw.m.Mbma.cN/Article/details/55122.shtmlWWw.m.Mbma.cN/Article/details/44868.shtmlWWw.m.Mbma.cN/Article/details/19200.shtmlWWw.m.Mbma.cN/Article/details/41911.shtmlWWw.m.Mbma.cN/Article/details/70768.shtmlWWw.m.Mbma.cN/Article/details/48511.shtmlWWw.m.Mbma.cN/Article/details/36112.shtmlWWw.m.Mbma.cN/Article/details/99674.shtmlWWw.m.Mbma.cN/Article/details/53149.shtmlWWw.m.Mbma.cN/Article/details/64556.shtmlWWw.m.Mbma.cN/Article/details/42421.shtmlWWw.m.Mbma.cN/Article/details/78582.shtmlWWw.m.Mbma.cN/Article/details/16516.shtmlWWw.m.Mbma.cN/Article/details/84927.shtmlWWw.m.Mbma.cN/Article/details/68842.shtmlWWw.m.Mbma.cN/Article/details/60804.shtmlWWw.m.Mbma.cN/Article/details/91968.shtmlWWw.m.Mbma.cN/Article/details/23458.shtmlWWw.m.Mbma.cN/Article/details/07734.shtmlWWw.m.Mbma.cN/Article/details/43194.shtmlWWw.m.Mbma.cN/Article/details/03482.shtmlWWw.m.Mbma.cN/Article/details/06786.shtmlWWw.m.Mbma.cN/Article/details/57512.shtmlWWw.m.Mbma.cN/Article/details/56685.shtmlWWw.m.Mbma.cN/Article/details/32151.shtmlWWw.m.Mbma.cN/Article/details/39675.shtmlWWw.m.Mbma.cN/Article/details/89219.shtmlWWw.m.Mbma.cN/Article/details/58150.shtmlWWw.m.Mbma.cN/Article/details/15844.shtmlWWw.m.Mbma.cN/Article/details/79566.shtmlWWw.m.Mbma.cN/Article/details/93034.shtmlWWw.m.Mbma.cN/Article/details/48134.shtmlWWw.m.Mbma.cN/Article/details/22985.shtmlWWw.m.Mbma.cN/Article/details/80736.shtmlWWw.m.Mbma.cN/Article/details/41133.shtmlWWw.m.Mbma.cN/Article/details/31564.shtmlWWw.m.Mbma.cN/Article/details/10324.shtmlWWw.m.Mbma.cN/Article/details/02511.shtmlWWw.m.Mbma.cN/Article/details/42655.shtmlWWw.m.Mbma.cN/Article/details/03070.shtmlWWw.m.Mbma.cN/Article/details/67046.shtmlWWw.m.Mbma.cN/Article/details/23980.shtmlWWw.m.Mbma.cN/Article/details/98592.shtmlWWw.m.Mbma.cN/Article/details/68819.shtmlWWw.m.Mbma.cN/Article/details/47701.shtmlWWw.m.Mbma.cN/Article/details/04931.shtmlWWw.m.Mbma.cN/Article/details/92387.shtmlWWw.m.Mbma.cN/Article/details/72430.shtmlWWw.m.Mbma.cN/Article/details/33806.shtmlWWw.m.Mbma.cN/Article/details/63737.shtmlWWw.m.Mbma.cN/Article/details/68980.shtmlWWw.m.Mbma.cN/Article/details/66383.shtmlWWw.m.Mbma.cN/Article/details/16429.shtmlWWw.m.Mbma.cN/Article/details/90539.shtmlWWw.m.Mbma.cN/Article/details/67227.shtmlWWw.m.Mbma.cN/Article/details/12327.shtmlWWw.m.Mbma.cN/Article/details/00559.shtmlWWw.m.Mbma.cN/Article/details/12672.shtmlWWw.m.Mbma.cN/Article/details/14688.shtmlWWw.m.Mbma.cN/Article/details/28422.shtmlWWw.m.Mbma.cN/Article/details/98215.shtmlWWw.m.Mbma.cN/Article/details/12568.shtmlWWw.m.Mbma.cN/Article/details/39181.shtmlWWw.m.Mbma.cN/Article/details/71007.shtmlWWw.m.Mbma.cN/Article/details/93156.shtmlWWw.m.Mbma.cN/Article/details/74587.shtmlWWw.m.Mbma.cN/Article/details/56184.shtmlWWw.m.Mbma.cN/Article/details/01690.shtmlWWw.m.Mbma.cN/Article/details/10353.shtmlWWw.m.Mbma.cN/Article/details/74505.shtmlWWw.m.Mbma.cN/Article/details/21855.shtmlWWw.m.Mbma.cN/Article/details/53980.shtmlWWw.m.Mbma.cN/Article/details/91403.shtmlWWw.m.Mbma.cN/Article/details/40577.shtmlWWw.m.Mbma.cN/Article/details/12425.shtmlWWw.m.Mbma.cN/Article/details/19458.shtmlWWw.m.Mbma.cN/Article/details/74469.shtmlWWw.m.Mbma.cN/Article/details/53237.shtmlWWw.m.Mbma.cN/Article/details/63808.shtmlWWw.m.Mbma.cN/Article/details/95299.shtmlWWw.m.Mbma.cN/Article/details/28481.shtmlWWw.m.Mbma.cN/Article/details/22222.shtmlWWw.m.Mbma.cN/Article/details/51448.shtmlWWw.m.Mbma.cN/Article/details/96925.shtmlWWw.m.Mbma.cN/Article/details/11892.shtmlWWw.m.Mbma.cN/Article/details/42540.shtmlWWw.m.Mbma.cN/Article/details/97939.shtmlWWw.m.Mbma.cN/Article/details/16471.shtmlWWw.m.Mbma.cN/Article/details/29466.shtmlWWw.m.Mbma.cN/Article/details/32227.shtmlWWw.m.Mbma.cN/Article/details/02398.shtmlWWw.m.Mbma.cN/Article/details/90197.shtmlWWw.m.Mbma.cN/Article/details/13483.shtmlWWw.m.Mbma.cN/Article/details/08595.shtmlWWw.m.Mbma.cN/Article/details/92137.shtmlWWw.m.Mbma.cN/Article/details/60760.shtmlWWw.m.Mbma.cN/Article/details/58926.shtmlWWw.m.Mbma.cN/Article/details/02666.shtmlWWw.m.Mbma.cN/Article/details/26471.shtmlWWw.m.Mbma.cN/Article/details/38776.shtmlWWw.m.Mbma.cN/Article/details/42379.shtmlWWw.m.Mbma.cN/Article/details/88205.shtmlWWw.m.Mbma.cN/Article/details/80804.shtmlWWw.m.Mbma.cN/Article/details/55184.shtmlWWw.m.Mbma.cN/Article/details/69802.shtmlWWw.m.Mbma.cN/Article/details/23584.shtmlWWw.m.Mbma.cN/Article/details/19044.shtmlWWw.m.Mbma.cN/Article/details/46762.shtmlWWw.m.Mbma.cN/Article/details/08870.shtmlWWw.m.Mbma.cN/Article/details/21614.shtmlWWw.m.Mbma.cN/Article/details/88039.shtmlWWw.m.Mbma.cN/Article/details/51183.shtmlWWw.m.Mbma.cN/Article/details/70051.shtmlWWw.m.Mbma.cN/Article/details/27955.shtmlWWw.m.Mbma.cN/Article/details/49125.shtmlWWw.m.Mbma.cN/Article/details/26501.shtmlWWw.m.Mbma.cN/Article/details/50306.shtmlWWw.m.Mbma.cN/Article/details/47307.shtmlWWw.m.Mbma.cN/Article/details/71037.shtmlWWw.m.Mbma.cN/Article/details/58934.shtmlWWw.m.Mbma.cN/Article/details/33080.shtmlWWw.m.Mbma.cN/Article/details/88968.shtmlWWw.m.Mbma.cN/Article/details/79802.shtmlWWw.m.Mbma.cN/Article/details/31717.shtmlWWw.m.Mbma.cN/Article/details/28537.shtmlWWw.m.Mbma.cN/Article/details/10300.shtmlWWw.m.Mbma.cN/Article/details/89694.shtmlWWw.m.Mbma.cN/Article/details/17751.shtmlWWw.m.Mbma.cN/Article/details/75159.shtmlWWw.m.Mbma.cN/Article/details/25496.shtmlWWw.m.Mbma.cN/Article/details/50174.shtmlWWw.m.Mbma.cN/Article/details/03402.shtmlWWw.m.Mbma.cN/Article/details/69487.shtmlWWw.m.Mbma.cN/Article/details/86878.shtmlWWw.m.Mbma.cN/Article/details/67126.shtmlWWw.m.Mbma.cN/Article/details/67586.shtmlWWw.m.Mbma.cN/Article/details/52308.shtmlWWw.m.Mbma.cN/Article/details/62374.shtmlWWw.m.Mbma.cN/Article/details/19207.shtmlWWw.m.Mbma.cN/Article/details/18648.shtmlWWw.m.Mbma.cN/Article/details/85908.shtmlWWw.m.Mbma.cN/Article/details/25589.shtmlWWw.m.Mbma.cN/Article/details/91012.shtmlWWw.m.Mbma.cN/Article/details/00385.shtmlWWw.m.Mbma.cN/Article/details/59660.shtmlWWw.m.Mbma.cN/Article/details/90732.shtmlWWw.m.Mbma.cN/Article/details/77727.shtmlWWw.m.Mbma.cN/Article/details/87852.shtmlWWw.m.Mbma.cN/Article/details/32322.shtmlWWw.m.Mbma.cN/Article/details/28257.shtmlWWw.m.Mbma.cN/Article/details/20351.shtmlWWw.m.Mbma.cN/Article/details/44297.shtmlWWw.m.Mbma.cN/Article/details/33502.shtmlWWw.m.Mbma.cN/Article/details/71943.shtmlWWw.m.Mbma.cN/Article/details/63524.shtmlWWw.m.Mbma.cN/Article/details/82115.shtmlWWw.m.Mbma.cN/Article/details/01276.shtmlWWw.m.Mbma.cN/Article/details/25115.shtmlWWw.m.Mbma.cN/Article/details/14973.shtmlWWw.m.Mbma.cN/Article/details/40523.shtmlWWw.m.Mbma.cN/Article/details/39210.shtmlWWw.m.Mbma.cN/Article/details/77125.shtmlWWw.m.Mbma.cN/Article/details/65112.shtmlWWw.m.Mbma.cN/Article/details/87590.shtmlWWw.m.Mbma.cN/Article/details/60312.shtmlWWw.m.Mbma.cN/Article/details/34908.shtmlWWw.m.Mbma.cN/Article/details/69543.shtmlWWw.m.Mbma.cN/Article/details/53559.shtmlWWw.m.Mbma.cN/Article/details/04800.shtmlWWw.m.Mbma.cN/Article/details/27815.shtmlWWw.m.Mbma.cN/Article/details/81514.shtmlWWw.m.Mbma.cN/Article/details/12501.shtmlWWw.m.Mbma.cN/Article/details/06739.shtmlWWw.m.Mbma.cN/Article/details/30841.shtmlWWw.m.Mbma.cN/Article/details/66877.shtmlWWw.m.Mbma.cN/Article/details/93509.shtmlWWw.m.Mbma.cN/Article/details/66819.shtmlWWw.m.Mbma.cN/Article/details/23261.shtmlWWw.m.Mbma.cN/Article/details/02977.shtmlWWw.m.Mbma.cN/Article/details/10909.shtmlWWw.m.Mbma.cN/Article/details/02699.shtmlWWw.m.Mbma.cN/Article/details/41206.shtmlWWw.m.Mbma.cN/Article/details/88702.shtmlWWw.m.Mbma.cN/Article/details/91754.shtmlWWw.m.Mbma.cN/Article/details/71646.shtmlWWw.m.Mbma.cN/Article/details/29689.shtmlWWw.m.Mbma.cN/Article/details/20859.shtmlWWw.m.Mbma.cN/Article/details/69982.shtmlWWw.m.Mbma.cN/Article/details/10049.shtmlWWw.m.Mbma.cN/Article/details/03190.shtmlWWw.m.Mbma.cN/Article/details/64617.shtmlWWw.m.Mbma.cN/Article/details/52379.shtmlWWw.m.Mbma.cN/Article/details/22548.shtmlWWw.m.Mbma.cN/Article/details/02926.shtmlWWw.m.Mbma.cN/Article/details/39320.shtmlWWw.m.Mbma.cN/Article/details/42130.shtmlWWw.m.Mbma.cN/Article/details/31112.shtmlWWw.m.Mbma.cN/Article/details/13782.shtmlWWw.m.Mbma.cN/Article/details/88562.shtmlWWw.m.Mbma.cN/Article/details/94943.shtmlWWw.m.Mbma.cN/Article/details/02740.shtml
Python getattr函数,别让它卡住你的对象属性查找
引言前面的文章提及, 继承关系里, 特别是多继承时, 有一个对象属性的查找解析顺序。当时语境因聚焦继承关系, 仅简要说到属性解析顺序与方法解析顺序, 那个方法解析顺序, 基于 C3 算法实现, 具体的解析顺序, 能从属性或者 mro()方法获取。然而, 我们已然介绍了更多面向对象方面的内容, 特别是在引入及属性描述符之后便是如此, 只是应用 MRO 好像有些不太够用了。所以, 笔者计划借两篇文章之篇幅对“对象属性解析”展开扩充阐述, 以求对属性解析的底层逻辑获致更为明晰的认知, 进而能在运用面向对象时更加驾轻就熟。在这篇文章里头, 我们先回过头去看看处于继承环境之中的, 有关属性解析顺序的那些内容, 接着再补充三个跟对象属性解析所牵扯到的函数或者方法, 借此进一步去剖析属性解析的触发机制。继承语境中的属性解析顺序首先, 我们要对继承语境內财产剖析先后次序展开一回回顾, 对于此剖析先后次序的领会属于根基范畴同时也是极为关键性质所属层面上很重要的内容, 因而, 必定得娴熟掌控。这一默认的剖析先后次序被列示如下:1、查找实例属性, 首先, 要先在实例对象的命名空间里开展属性的查找, 要是找到了, 那就直接去访问该属性不然的话, 便径直进入下一个查找步骤。2、查找实例所歸屬的類的類屬性, 要是在實例之中未尋找到相關屬性, 那便會在類的命名空間之中加以查找。同樣的, 要是找尋到了, 那就直接訪問該類屬性, 不然就展開下一步查找。3、若果于实例对象所属的类里没能找到基类属性, 将依照MRO, 也就是方法解析顺序, 在基类中依次逐一进行查找, 一旦找到便直接访问那该项属性。要是最终果真未寻觅到, 那就会报错。接下来我们通过代码来进行验证class DaGongRen: count 0 def __init__(self, name): self.name name DaGongRen.count 1 class Programmer(DaGongRen): count 0 def __init__(self, name, gender): super().__init__(name) self.gender gender Programmer.count 1 class ProductManager(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender if __name__ __main__: coder Programmer(张三, 女) pm ProductManager(李四, 女) print(coder.__dict__) print(pm.__dict__) print(Programmer.__dict__) print(ProductManager.__dict__) print(DaGongRen.__dict__) # 实例属性从实例对象的命名空间也就是__dict__字典中获取 print(coder.name) print(pm.name) # 类属性实例命名空间无该属性但是实例所属类中有该类属性 print(coder.count) # 基类属性实例命名空间没有实例所属类中也无基于MRO到基类中查找 print(pm.count)执行结果从代码从执行结果可知1、name属性存在于实例对象的命名范畴内里, 那么, 径直从其中去取得并返回。2、“count”属性于具体的实例对象的命名空间里面不存在, 因而要进行更深层次的查找。3、存在于coder所对应的类里, 有着count这般的类属性, 因而直接去返回1。4、存在于pm所对应的类里面的、count这样的类属性是不存在的, 得进一步针对此去基类那儿查找。5、pm.count最终在的类属性中获取到返回2。3个函数/方法当我们借助实例对象去访问属性之际, 得依照对象的解析顺序来展开查找, 这其中会牵涉到几个函数或者方法, 并且仅仅是从名称方面端详, 极易造成混淆的是3个函数或者方法。1、(obj, attr)内置函数在我们借助实例对象以“点”这种方式去访问属性之际, 实际上存在着一个与之等价的内置函数用于进行实例对象有关属性的访问, 具体就是()。与“点”操作符相比较而言, ()函数额外还具备了属性默认值这样的功能, 换句话讲, 要是所访问的属性并没存在, 那么就返回默认值, 而并非是抛出来。仍是先前的代码, 我们借由“点”操作符, 以及内置函数(), 各自展开属性的访问尝试, 能够见到如下这般的执行结果:2、()魔术方法当对实例对象的属性开展访问操作时, 最先必定会去调用()这个魔术方法来实施统一的处理, 借由这个方法去进行属性查找顺序的解析, 要是查找不到就会抛出异常, 在这个时候, 倘若定义了()方法, 那么依旧会调用该方法。这里当下不会开展代码演示, 最终会借由一个完整用到三个函数的代码示例予以阐释。3、()魔术方法此那般魔术方法仅仅于访问属性遭遇失败之际才经由括号予以调用, 换句话讲也是可以这么说的, 唯有当个属性于某实例亦或某类、还有就是那一基类里头查找寻求寻而不得之时才会促使其被触发。而当期望为那并不存在的属性给出某种默认的行为表现, 又或者是针对于动态属性而言的时候, 是能够去考虑运用括号方法的。在优先这种情况方面对比于括号内置函数的默认之值的一系列逻辑而言。class DaGongRen: count 0 def __init__(self, name): self.name name DaGongRen.count 1 class Programmer(DaGongRen): count 0 def __init__(self, name, gender): super().__init__(name) self.gender gender Programmer.count 1 def __getattr__(self, item): print(f属性{item}不存在) return None if __name__ __main__: coder Programmer(张三, 女) # 最终通过__getattr__方法返回了None所以不会走getattr的默认值逻辑 print(getattr(coder, age, 18)) # __getattr__方法返回了None不会抛AttributeError print(coder.age)执行结果最终, 我们来瞧一瞧把3个方法或者函数放置在一起的那种完整的代码示例情形: 。class DaGongRen: def __init__(self, name): self.name name class Programmer(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender def __getattribute__(self, item): print(f尝试访问属性{item}) super().__getattribute__(item) def __getattr__(self, item): print(f属性{item}不存在) return None class ProductManager(DaGongRen): def __init__(self, name, gender): super().__init__(name) self.gender gender def __getattribute__(self, item): print(f尝试访问属性{item}) super().__getattribute__(item) if __name__ __main__: coder Programmer(张三, 女) pm ProductManager(李四, 女) # 最终通过__getattr__方法返回了None所以不会走getattr的默认值逻辑 print(以下访问同时有__getattribute__和__getattr__) print(getattr(coder, age, 18)) # __getattr__方法返回了None不会抛AttributeError print(coder.age) print(以下访问有__getattribute__无__getattr__) print(getattr(pm, age, 18)) print(pm.age)执行结果从代码和执行结果可以看出1、访问任意一个属性之际, 最先都会调用()方法, 不论属性是否存在, 此方法都会被触发, 所以, 要是需要针对所有的属性访问实施统一的处理之时, 能够在该方法里增添处理逻辑, 不过, 需要留意的是要谨慎规避递归访问的情形, 通常应当调用super()的()来开展相关的后续属性解析处理, 不然可能致使属性解析出现异常。2、采用的这种方法, 当属性处于不存在的状况之时, 是会被另外一种方法予以调用。而且其具备的优先级, 又是高于既定当中的默认值处理逻辑呢。3、倘若进行了以及的自定义操作的话, 便会觉察到在属性的解析顺序之中MRO解析顺序极有可能会遭受阻断。因而, 在一般情形之下, 是不应当随意去重写的。总结针对实例对象属性解析来讲, 本文对继承里的属性解析属性之时再次进行了查看, 而且增添了能够对属性解析行为产生影响的三个函数或方法呢当引入属性描述符之际, 属性的解析顺序会愈发复杂, 对于这部分内容, 我们于下一篇文章里持续铺展。感谢您抽出时间来阅读, 要是这个文本对您的学习能起到一定的助力作用, 那么欢迎您进行点赞以及收藏。WWw.m.Mbma.cN/Article/details/06171.shtmlWWw.m.Mbma.cN/Article/details/84533.shtmlWWw.m.Mbma.cN/Article/details/86993.shtmlWWw.m.Mbma.cN/Article/details/53741.shtmlWWw.m.Mbma.cN/Article/details/35175.shtmlWWw.m.Mbma.cN/Article/details/62934.shtmlWWw.m.Mbma.cN/Article/details/02407.shtmlWWw.m.Mbma.cN/Article/details/12456.shtmlWWw.m.Mbma.cN/Article/details/10379.shtmlWWw.m.Mbma.cN/Article/details/21338.shtmlWWw.m.Mbma.cN/Article/details/69648.shtmlWWw.m.Mbma.cN/Article/details/81011.shtmlWWw.m.Mbma.cN/Article/details/07908.shtmlWWw.m.Mbma.cN/Article/details/12023.shtmlWWw.m.Mbma.cN/Article/details/92699.shtmlWWw.m.Mbma.cN/Article/details/90642.shtmlWWw.m.Mbma.cN/Article/details/74254.shtmlWWw.m.Mbma.cN/Article/details/93559.shtmlWWw.m.Mbma.cN/Article/details/42727.shtmlWWw.m.Mbma.cN/Article/details/57473.shtmlWWw.m.Mbma.cN/Article/details/16265.shtmlWWw.m.Mbma.cN/Article/details/65882.shtmlWWw.m.Mbma.cN/Article/details/40869.shtmlWWw.m.Mbma.cN/Article/details/44109.shtmlWWw.m.Mbma.cN/Article/details/81538.shtmlWWw.m.Mbma.cN/Article/details/32194.shtmlWWw.m.Mbma.cN/Article/details/92648.shtmlWWw.m.Mbma.cN/Article/details/83393.shtmlWWw.m.Mbma.cN/Article/details/56131.shtmlWWw.m.Mbma.cN/Article/details/70476.shtmlWWw.m.Mbma.cN/Article/details/58069.shtmlWWw.m.Mbma.cN/Article/details/98787.shtmlWWw.m.Mbma.cN/Article/details/49354.shtmlWWw.m.Mbma.cN/Article/details/05784.shtmlWWw.m.Mbma.cN/Article/details/03910.shtmlWWw.m.Mbma.cN/Article/details/24309.shtmlWWw.m.Mbma.cN/Article/details/73461.shtmlWWw.m.Mbma.cN/Article/details/87174.shtmlWWw.m.Mbma.cN/Article/details/01128.shtmlWWw.m.Mbma.cN/Article/details/43352.shtmlWWw.m.Mbma.cN/Article/details/96271.shtmlWWw.m.Mbma.cN/Article/details/87505.shtmlWWw.m.Mbma.cN/Article/details/29750.shtmlWWw.m.Mbma.cN/Article/details/07546.shtmlWWw.m.Mbma.cN/Article/details/42686.shtmlWWw.m.Mbma.cN/Article/details/69282.shtmlWWw.m.Mbma.cN/Article/details/55992.shtmlWWw.m.Mbma.cN/Article/details/87545.shtmlWWw.m.Mbma.cN/Article/details/86684.shtmlWWw.m.Mbma.cN/Article/details/40948.shtmlWWw.m.Mbma.cN/Article/details/73786.shtmlWWw.m.Mbma.cN/Article/details/36242.shtmlWWw.m.Mbma.cN/Article/details/81361.shtmlWWw.m.Mbma.cN/Article/details/94642.shtmlWWw.m.Mbma.cN/Article/details/32557.shtmlWWw.m.Mbma.cN/Article/details/08627.shtmlWWw.m.Mbma.cN/Article/details/35683.shtmlWWw.m.Mbma.cN/Article/details/37536.shtmlWWw.m.Mbma.cN/Article/details/83646.shtmlWWw.m.Mbma.cN/Article/details/18496.shtmlWWw.m.Mbma.cN/Article/details/73933.shtmlWWw.m.Mbma.cN/Article/details/98898.shtmlWWw.m.Mbma.cN/Article/details/91133.shtmlWWw.m.Mbma.cN/Article/details/97663.shtmlWWw.m.Mbma.cN/Article/details/59608.shtmlWWw.m.Mbma.cN/Article/details/97010.shtmlWWw.m.Mbma.cN/Article/details/80414.shtmlWWw.m.Mbma.cN/Article/details/58418.shtmlWWw.m.Mbma.cN/Article/details/66891.shtmlWWw.m.Mbma.cN/Article/details/38414.shtmlWWw.m.Mbma.cN/Article/details/54080.shtmlWWw.m.Mbma.cN/Article/details/20017.shtmlWWw.m.Mbma.cN/Article/details/45132.shtmlWWw.m.Mbma.cN/Article/details/25283.shtmlWWw.m.Mbma.cN/Article/details/93095.shtmlWWw.m.Mbma.cN/Article/details/56694.shtmlWWw.m.Mbma.cN/Article/details/72978.shtmlWWw.m.Mbma.cN/Article/details/84372.shtmlWWw.m.Mbma.cN/Article/details/57862.shtmlWWw.m.Mbma.cN/Article/details/06731.shtmlWWw.m.Mbma.cN/Article/details/62119.shtmlWWw.m.Mbma.cN/Article/details/85779.shtmlWWw.m.Mbma.cN/Article/details/21636.shtmlWWw.m.Mbma.cN/Article/details/00371.shtmlWWw.m.Mbma.cN/Article/details/20758.shtmlWWw.m.Mbma.cN/Article/details/84858.shtmlWWw.m.Mbma.cN/Article/details/84793.shtmlWWw.m.Mbma.cN/Article/details/33774.shtmlWWw.m.Mbma.cN/Article/details/47705.shtmlWWw.m.Mbma.cN/Article/details/61813.shtmlWWw.m.Mbma.cN/Article/details/97304.shtmlWWw.m.Mbma.cN/Article/details/88398.shtmlWWw.m.Mbma.cN/Article/details/37917.shtmlWWw.m.Mbma.cN/Article/details/98637.shtmlWWw.m.Mbma.cN/Article/details/15522.shtmlWWw.m.Mbma.cN/Article/details/83456.shtmlWWw.m.Mbma.cN/Article/details/32896.shtmlWWw.m.Mbma.cN/Article/details/18344.shtmlWWw.m.Mbma.cN/Article/details/17417.shtmlWWw.m.Mbma.cN/Article/details/19495.shtmlWWw.m.Mbma.cN/Article/details/37222.shtmlWWw.m.Mbma.cN/Article/details/01683.shtmlWWw.m.Mbma.cN/Article/details/94525.shtmlWWw.m.Mbma.cN/Article/details/19715.shtmlWWw.m.Mbma.cN/Article/details/53018.shtmlWWw.m.Mbma.cN/Article/details/78239.shtmlWWw.m.Mbma.cN/Article/details/27607.shtmlWWw.m.Mbma.cN/Article/details/83289.shtmlWWw.m.Mbma.cN/Article/details/52732.shtmlWWw.m.Mbma.cN/Article/details/06227.shtmlWWw.m.Mbma.cN/Article/details/52718.shtmlWWw.m.Mbma.cN/Article/details/31970.shtmlWWw.m.Mbma.cN/Article/details/27577.shtmlWWw.m.Mbma.cN/Article/details/31886.shtmlWWw.m.Mbma.cN/Article/details/57617.shtmlWWw.m.Mbma.cN/Article/details/98561.shtmlWWw.m.Mbma.cN/Article/details/30957.shtmlWWw.m.Mbma.cN/Article/details/46897.shtmlWWw.m.Mbma.cN/Article/details/67937.shtmlWWw.m.Mbma.cN/Article/details/50344.shtmlWWw.m.Mbma.cN/Article/details/45773.shtmlWWw.m.Mbma.cN/Article/details/20917.shtmlWWw.m.Mbma.cN/Article/details/83793.shtmlWWw.m.Mbma.cN/Article/details/47896.shtmlWWw.m.Mbma.cN/Article/details/54127.shtmlWWw.m.Mbma.cN/Article/details/73095.shtmlWWw.m.Mbma.cN/Article/details/84939.shtmlWWw.m.Mbma.cN/Article/details/16825.shtmlWWw.m.Mbma.cN/Article/details/65344.shtmlWWw.m.Mbma.cN/Article/details/59814.shtmlWWw.m.Mbma.cN/Article/details/55122.shtmlWWw.m.Mbma.cN/Article/details/44868.shtmlWWw.m.Mbma.cN/Article/details/19200.shtmlWWw.m.Mbma.cN/Article/details/41911.shtmlWWw.m.Mbma.cN/Article/details/70768.shtmlWWw.m.Mbma.cN/Article/details/48511.shtmlWWw.m.Mbma.cN/Article/details/36112.shtmlWWw.m.Mbma.cN/Article/details/99674.shtmlWWw.m.Mbma.cN/Article/details/53149.shtmlWWw.m.Mbma.cN/Article/details/64556.shtmlWWw.m.Mbma.cN/Article/details/42421.shtmlWWw.m.Mbma.cN/Article/details/78582.shtmlWWw.m.Mbma.cN/Article/details/16516.shtmlWWw.m.Mbma.cN/Article/details/84927.shtmlWWw.m.Mbma.cN/Article/details/68842.shtmlWWw.m.Mbma.cN/Article/details/60804.shtmlWWw.m.Mbma.cN/Article/details/91968.shtmlWWw.m.Mbma.cN/Article/details/23458.shtmlWWw.m.Mbma.cN/Article/details/07734.shtmlWWw.m.Mbma.cN/Article/details/43194.shtmlWWw.m.Mbma.cN/Article/details/03482.shtmlWWw.m.Mbma.cN/Article/details/06786.shtmlWWw.m.Mbma.cN/Article/details/57512.shtmlWWw.m.Mbma.cN/Article/details/56685.shtmlWWw.m.Mbma.cN/Article/details/32151.shtmlWWw.m.Mbma.cN/Article/details/39675.shtmlWWw.m.Mbma.cN/Article/details/89219.shtmlWWw.m.Mbma.cN/Article/details/58150.shtmlWWw.m.Mbma.cN/Article/details/15844.shtmlWWw.m.Mbma.cN/Article/details/79566.shtmlWWw.m.Mbma.cN/Article/details/93034.shtmlWWw.m.Mbma.cN/Article/details/48134.shtmlWWw.m.Mbma.cN/Article/details/22985.shtmlWWw.m.Mbma.cN/Article/details/80736.shtmlWWw.m.Mbma.cN/Article/details/41133.shtmlWWw.m.Mbma.cN/Article/details/31564.shtmlWWw.m.Mbma.cN/Article/details/10324.shtmlWWw.m.Mbma.cN/Article/details/02511.shtmlWWw.m.Mbma.cN/Article/details/42655.shtmlWWw.m.Mbma.cN/Article/details/03070.shtmlWWw.m.Mbma.cN/Article/details/67046.shtmlWWw.m.Mbma.cN/Article/details/23980.shtmlWWw.m.Mbma.cN/Article/details/98592.shtmlWWw.m.Mbma.cN/Article/details/68819.shtmlWWw.m.Mbma.cN/Article/details/47701.shtmlWWw.m.Mbma.cN/Article/details/04931.shtmlWWw.m.Mbma.cN/Article/details/92387.shtmlWWw.m.Mbma.cN/Article/details/72430.shtmlWWw.m.Mbma.cN/Article/details/33806.shtmlWWw.m.Mbma.cN/Article/details/63737.shtmlWWw.m.Mbma.cN/Article/details/68980.shtmlWWw.m.Mbma.cN/Article/details/66383.shtmlWWw.m.Mbma.cN/Article/details/16429.shtmlWWw.m.Mbma.cN/Article/details/90539.shtmlWWw.m.Mbma.cN/Article/details/67227.shtmlWWw.m.Mbma.cN/Article/details/12327.shtmlWWw.m.Mbma.cN/Article/details/00559.shtmlWWw.m.Mbma.cN/Article/details/12672.shtmlWWw.m.Mbma.cN/Article/details/14688.shtmlWWw.m.Mbma.cN/Article/details/28422.shtmlWWw.m.Mbma.cN/Article/details/98215.shtmlWWw.m.Mbma.cN/Article/details/12568.shtmlWWw.m.Mbma.cN/Article/details/39181.shtmlWWw.m.Mbma.cN/Article/details/71007.shtmlWWw.m.Mbma.cN/Article/details/93156.shtmlWWw.m.Mbma.cN/Article/details/74587.shtmlWWw.m.Mbma.cN/Article/details/56184.shtmlWWw.m.Mbma.cN/Article/details/01690.shtmlWWw.m.Mbma.cN/Article/details/10353.shtmlWWw.m.Mbma.cN/Article/details/74505.shtmlWWw.m.Mbma.cN/Article/details/21855.shtmlWWw.m.Mbma.cN/Article/details/53980.shtmlWWw.m.Mbma.cN/Article/details/91403.shtmlWWw.m.Mbma.cN/Article/details/40577.shtmlWWw.m.Mbma.cN/Article/details/12425.shtmlWWw.m.Mbma.cN/Article/details/19458.shtmlWWw.m.Mbma.cN/Article/details/74469.shtmlWWw.m.Mbma.cN/Article/details/53237.shtmlWWw.m.Mbma.cN/Article/details/63808.shtmlWWw.m.Mbma.cN/Article/details/95299.shtmlWWw.m.Mbma.cN/Article/details/28481.shtmlWWw.m.Mbma.cN/Article/details/22222.shtmlWWw.m.Mbma.cN/Article/details/51448.shtmlWWw.m.Mbma.cN/Article/details/96925.shtmlWWw.m.Mbma.cN/Article/details/11892.shtmlWWw.m.Mbma.cN/Article/details/42540.shtmlWWw.m.Mbma.cN/Article/details/97939.shtmlWWw.m.Mbma.cN/Article/details/16471.shtmlWWw.m.Mbma.cN/Article/details/29466.shtmlWWw.m.Mbma.cN/Article/details/32227.shtmlWWw.m.Mbma.cN/Article/details/02398.shtmlWWw.m.Mbma.cN/Article/details/90197.shtmlWWw.m.Mbma.cN/Article/details/13483.shtmlWWw.m.Mbma.cN/Article/details/08595.shtmlWWw.m.Mbma.cN/Article/details/92137.shtmlWWw.m.Mbma.cN/Article/details/60760.shtmlWWw.m.Mbma.cN/Article/details/58926.shtmlWWw.m.Mbma.cN/Article/details/02666.shtmlWWw.m.Mbma.cN/Article/details/26471.shtmlWWw.m.Mbma.cN/Article/details/38776.shtmlWWw.m.Mbma.cN/Article/details/42379.shtmlWWw.m.Mbma.cN/Article/details/88205.shtmlWWw.m.Mbma.cN/Article/details/80804.shtmlWWw.m.Mbma.cN/Article/details/55184.shtmlWWw.m.Mbma.cN/Article/details/69802.shtmlWWw.m.Mbma.cN/Article/details/23584.shtmlWWw.m.Mbma.cN/Article/details/19044.shtmlWWw.m.Mbma.cN/Article/details/46762.shtmlWWw.m.Mbma.cN/Article/details/08870.shtmlWWw.m.Mbma.cN/Article/details/21614.shtmlWWw.m.Mbma.cN/Article/details/88039.shtmlWWw.m.Mbma.cN/Article/details/51183.shtmlWWw.m.Mbma.cN/Article/details/70051.shtmlWWw.m.Mbma.cN/Article/details/27955.shtmlWWw.m.Mbma.cN/Article/details/49125.shtmlWWw.m.Mbma.cN/Article/details/26501.shtmlWWw.m.Mbma.cN/Article/details/50306.shtmlWWw.m.Mbma.cN/Article/details/47307.shtmlWWw.m.Mbma.cN/Article/details/71037.shtmlWWw.m.Mbma.cN/Article/details/58934.shtmlWWw.m.Mbma.cN/Article/details/33080.shtmlWWw.m.Mbma.cN/Article/details/88968.shtmlWWw.m.Mbma.cN/Article/details/79802.shtmlWWw.m.Mbma.cN/Article/details/31717.shtmlWWw.m.Mbma.cN/Article/details/28537.shtmlWWw.m.Mbma.cN/Article/details/10300.shtmlWWw.m.Mbma.cN/Article/details/89694.shtmlWWw.m.Mbma.cN/Article/details/17751.shtmlWWw.m.Mbma.cN/Article/details/75159.shtmlWWw.m.Mbma.cN/Article/details/25496.shtmlWWw.m.Mbma.cN/Article/details/50174.shtmlWWw.m.Mbma.cN/Article/details/03402.shtmlWWw.m.Mbma.cN/Article/details/69487.shtmlWWw.m.Mbma.cN/Article/details/86878.shtmlWWw.m.Mbma.cN/Article/details/67126.shtmlWWw.m.Mbma.cN/Article/details/67586.shtmlWWw.m.Mbma.cN/Article/details/52308.shtmlWWw.m.Mbma.cN/Article/details/62374.shtmlWWw.m.Mbma.cN/Article/details/19207.shtmlWWw.m.Mbma.cN/Article/details/18648.shtmlWWw.m.Mbma.cN/Article/details/85908.shtmlWWw.m.Mbma.cN/Article/details/25589.shtmlWWw.m.Mbma.cN/Article/details/91012.shtmlWWw.m.Mbma.cN/Article/details/00385.shtmlWWw.m.Mbma.cN/Article/details/59660.shtmlWWw.m.Mbma.cN/Article/details/90732.shtmlWWw.m.Mbma.cN/Article/details/77727.shtmlWWw.m.Mbma.cN/Article/details/87852.shtmlWWw.m.Mbma.cN/Article/details/32322.shtmlWWw.m.Mbma.cN/Article/details/28257.shtmlWWw.m.Mbma.cN/Article/details/20351.shtmlWWw.m.Mbma.cN/Article/details/44297.shtmlWWw.m.Mbma.cN/Article/details/33502.shtmlWWw.m.Mbma.cN/Article/details/71943.shtmlWWw.m.Mbma.cN/Article/details/63524.shtmlWWw.m.Mbma.cN/Article/details/82115.shtmlWWw.m.Mbma.cN/Article/details/01276.shtmlWWw.m.Mbma.cN/Article/details/25115.shtmlWWw.m.Mbma.cN/Article/details/14973.shtmlWWw.m.Mbma.cN/Article/details/40523.shtmlWWw.m.Mbma.cN/Article/details/39210.shtmlWWw.m.Mbma.cN/Article/details/77125.shtmlWWw.m.Mbma.cN/Article/details/65112.shtmlWWw.m.Mbma.cN/Article/details/87590.shtmlWWw.m.Mbma.cN/Article/details/60312.shtmlWWw.m.Mbma.cN/Article/details/34908.shtmlWWw.m.Mbma.cN/Article/details/69543.shtmlWWw.m.Mbma.cN/Article/details/53559.shtmlWWw.m.Mbma.cN/Article/details/04800.shtmlWWw.m.Mbma.cN/Article/details/27815.shtmlWWw.m.Mbma.cN/Article/details/81514.shtmlWWw.m.Mbma.cN/Article/details/12501.shtmlWWw.m.Mbma.cN/Article/details/06739.shtmlWWw.m.Mbma.cN/Article/details/30841.shtmlWWw.m.Mbma.cN/Article/details/66877.shtmlWWw.m.Mbma.cN/Article/details/93509.shtmlWWw.m.Mbma.cN/Article/details/66819.shtmlWWw.m.Mbma.cN/Article/details/23261.shtmlWWw.m.Mbma.cN/Article/details/02977.shtmlWWw.m.Mbma.cN/Article/details/10909.shtmlWWw.m.Mbma.cN/Article/details/02699.shtmlWWw.m.Mbma.cN/Article/details/41206.shtmlWWw.m.Mbma.cN/Article/details/88702.shtmlWWw.m.Mbma.cN/Article/details/91754.shtmlWWw.m.Mbma.cN/Article/details/71646.shtmlWWw.m.Mbma.cN/Article/details/29689.shtmlWWw.m.Mbma.cN/Article/details/20859.shtmlWWw.m.Mbma.cN/Article/details/69982.shtmlWWw.m.Mbma.cN/Article/details/10049.shtmlWWw.m.Mbma.cN/Article/details/03190.shtmlWWw.m.Mbma.cN/Article/details/64617.shtmlWWw.m.Mbma.cN/Article/details/52379.shtmlWWw.m.Mbma.cN/Article/details/22548.shtmlWWw.m.Mbma.cN/Article/details/02926.shtmlWWw.m.Mbma.cN/Article/details/39320.shtmlWWw.m.Mbma.cN/Article/details/42130.shtmlWWw.m.Mbma.cN/Article/details/31112.shtmlWWw.m.Mbma.cN/Article/details/13782.shtmlWWw.m.Mbma.cN/Article/details/88562.shtmlWWw.m.Mbma.cN/Article/details/94943.shtmlWWw.m.Mbma.cN/Article/details/02740.shtml