我有一个继承层次结构,其中一些类有一个类属性,名为“腌制”。如果A.pickled存在,我想得到它,如果没有,即使A派生自许多类,例如,B和B.pickled存在(或不存在)。
A.pickled
B.pickled
现在,我的解决方案正在A的__mro__上爬行。如果可能的话,我想要一个更干净的解决方案。
A
__mro__
发布于 2014-06-10 21:33:50
要绕过通过__mro__进行的常规搜索,可以直接查看类的属性字典。您可以使用 function:
return vars(cls).get('pickled', None)
您也可以直接访问__dict__属性:
__dict__
return cls.__dict__.get('pickled', None)
但是,使用内置函数比直接访问双重强调的属性字典更可取。
object.__getattribute__是用于查看类属性的错误方法;请参见?
object.__getattribute__
type.__getattribute__用于类的属性访问,但也会搜索MRO。
type.__getattribute__
https://stackoverflow.com/questions/24150636
相似问题