获取班级家长?
使用以下属性:
cls.__bases__
从docs:
类 对象的基类的元组。
例子:
>>> str.__bases__
(<type 'basestring'>,)
又如:
>>> class A(object):
... pass
...
>>> class B(object):
... pass
...
>>> class C(A, B):
... pass
...
>>> C.__bases__
(<class '__main__.A'>, <class '__main__.B'>)
如果你想把所有的祖先而不仅仅是眼前的,使用inspect.getmro:
import inspect
print inspect.getmro(cls)
有用地,这给你所有的祖先类在“方法解析顺序” - 即祖先在解析方法时将被检查的顺序(或者实际上,任何其他属性 - 方法和其他属性居于相同的毕竟,Python中的命名空间;-)。
你也可以直接使用'cls .__ mro__'(至少在Python 3.5中) – naught101 2017-01-16 22:27:32
新样式类有一个你可以调用的mro方法,它以方法解析顺序返回一个父类的列表。
什么是新式课程?看起来我可以在Django模型中使用它,但是从'object'继承的任何东西似乎都不会响应'mro'。 – 2015-06-15 14:21:11
考虑对象'x',我们可以得到与呼叫 '型的方法解析顺序(X).mro()' 我们可以考虑,如果'x'有'ClassX'与基类: 'ClassX in type(x).mro()' – 648trindade 2017-01-15 01:11:10
@FranckDernoncourt此线程现在是“python get parent class”的最高谷歌搜索结果。它比构成接下来的3个结果的其他SO问题略有关联。第五个结果是一个没有给出答案的Python文档页面,第六个结果最终是一个Python文档页面,它给出了答案,尽管深入一长页文本。 – 2012-05-17 18:26:33
为什么有人会在对SO的解释更有说服力且易于访问时阅读文档?从我发现这个问题开始,直到我从Google到达这个页面时,我用了不到5秒的时间,而搜索文档至少需要我五次,可能几分钟。 – jononomo 2012-12-31 02:04:46
作为一个想快速找到答案的人,搜索谷歌,找到了这个链接,并完成了我需要完成的工作:为什么人们(我认为斯洛特的评论已被删除)抱怨有人提出了一个有效的问题?是的,我知道我在这里的晚会非常晚。 – limasxgoesto0 2013-10-25 18:11:18