为了给出一些背景故事,我正在一个相当大的代码库中工作,它可能会或者可能没有在其创建中做出一些可疑的架构决策,因此我经常需要弄清楚哪个父类的属性或函数来自。
这段代码可以实现,但似乎有更多的pythonic方法可以做到这一点:
def find_attribute_class(model, attribute):
return [m for m in model.mro() if attribute in m.__dict__]
示例:
class Bar(object):
junk = {}
class Foo(Bar):
trunk = []
find_attribute_class(Foo, 'junk') # returns [Bar]
find_attribute_class(Foo, 'trunk') # returns [Foo]