我有一个继承层次,其中一些类有例如命名为“腌”一类的属性。 我想获得A.pickled
如果存在或无如果没有-即使许多类别,包括例如,B和派生B.pickled
存在(或没有)。
现在我的解决方案抓取A
的__mro__
。 我想如果可能的话清晰的解决方案。
我有一个继承层次,其中一些类有例如命名为“腌”一类的属性。 我想获得A.pickled
如果存在或无如果没有-即使许多类别,包括例如,B和派生B.pickled
存在(或没有)。
现在我的解决方案抓取A
的__mro__
。 我想如果可能的话清晰的解决方案。
要绕过通过正常的搜索__mro__
,直接在类的属性查字典来代替。 您可以使用vars()
函数为:
return vars(cls).get('pickled', None)
你可以只访问__dict__
属性直接过:
return cls.__dict__.get('pickled', None)
但是使用内置函数优于直接访问双下划线属性词典。
object.__getattribute__
是用于寻找类属性的错误的方法; 见类型之间的区别是什么.__ getattribute__和对象.__ getattribute__?
type.__getattribute__
是什么是用于在类属性的访问,但还是会搜索MRO了。
我不知道,但也许
try:
return object.__getattribute__(cls, 'pickled')
except AttributeError:
return None