如何获取Python类的父类?


当前回答

如果你有一个变量,想要获取它的类和父类,使用type()方法,它将为变量提供类

val="happy coding"
print(type(val).__mro__)

输出:

(<class 'str'>, <class 'object'>)

其他回答

使用以下属性:

cls.__bases__

从文档中可以看出:

类的基类元组 对象。

例子:

>>> 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'>)

New-style类有一个mro方法,你可以调用它,它会按照方法解析的顺序返回父类的列表。

获得所有父元素的最快方法是使用内置的__mro__。

例如,repr(YOUR_CLASS.__mro__)。

以下几点:

import getpass
getpass.GetPassWarning.__mro__

...输出,依次为:

(< getpass类”。GetPassWarning'>, <type '异常。UserWarning'>, <type '异常。警告'>,<type '异常。异常'>,<type '异常。BaseException'>, <type 'object'>)

你知道了。“最佳”答案可能有更多的投票,但这比一些复杂的for循环要简单得多,每次只查看__bases__一个类,更不用说当一个类扩展了两个或多个父类时。导入和使用inspect只会不必要地使范围变得模糊。

这个函数将打印一个对象的所有类,而在每一步中,下一个对象将是最左边的父类。

def print_root_left(class_):
    while True:
      print(class_)
      # Check there if are no bases then we have reached the root class
      if not class_.__bases__:
        break
      class_=class_.__bases__[0] # use the left most parent


example = "hello" 
print_root_left(example.__class__)

如果你有一个变量,想要获取它的类和父类,使用type()方法,它将为变量提供类

val="happy coding"
print(type(val).__mro__)

输出:

(<class 'str'>, <class 'object'>)