鉴于一类Foo
(无论是新型的类或不),你如何生成所有的基类-继承层次结构中的任何地方-它issubclass
的?
Answer 1:
inspect.getmro(cls)
既适用于新老样式类,并返回同NewClass.mro()
类及其所有祖先类的列表,在使用方法解析顺序。
>>> class A(object):
>>> pass
>>>
>>> class B(A):
>>> pass
>>>
>>> import inspect
>>> inspect.getmro(B)
(<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)
Answer 2:
见__bases__
性能上的蟒蛇可用的class
,它包含了基础类的元组:
>>> def classlookup(cls):
... c = list(cls.__bases__)
... for base in c:
... c.extend(classlookup(base))
... return c
...
>>> class A: pass
...
>>> class B(A): pass
...
>>> class C(object, B): pass
...
>>> classlookup(C)
[<type 'object'>, <class __main__.B at 0x00AB7300>, <class __main__.A at 0x00A6D630>]
Answer 3:
inspect.getclasstree()
将创建的类和他们的基地嵌套列表。 用法:
inspect.getclasstree(inspect.getmro(IOError)) # Insert your Class instead of IOError.
Answer 4:
你可以使用__bases__
类对象的元组:
class A(object, B, C):
def __init__(self):
pass
print A.__bases__
通过返回的元组__bases__
了其所有的基类。
希望能帮助到你!
Answer 5:
尽管约亨的回答是非常有益的,正确的,因为你可以使用检查模块的.getmro()方法获得的类层次结构,这一点也很重要强调的是Python的继承层次如下:
例如:
class MyClass(YourClass):
继承类
- 儿童类
- 派生类
- 子类
例如:
class YourClass(Object):
继承的类
- 父类
- Base类
- 超
一类可以从另一个继承 - 类由于继承 - 尤其是其方法是继承 - 这意味着继承(子)类的实例都可以访问归因于继承(父)类的
实例 - >类 - >然后继承的类
运用
import inspect
inspect.getmro(MyClass)
将显示您的层次结构,内Python的。
文章来源: List all base classes in a hierarchy of given class?