遍历到基地 class

Traverse up to base class

我可以执行以下操作来获取我正在与实例一起使用的 class 的名称:

self.__class__.__name__

有没有办法在不超出任何 django 内置类型的情况下获得基础 class 名称?如果是这样,那怎么可能呢?例如,如果我有:

class Wire:
    def __init__(self, default=True):
        self.state = default
        self.observers = []


class LED(Wire):
    """
    For debugging."""

我怎么能得到(不知道可能有多少级继承)?:

>>> l = LED()
>>> l.get_base_case() # 'Wire'

您可以在对象类型上使用 mro()

type(l).mro()[1]  # 0: the type itself, 1: base class in linear hierarchy, ...

这里mro代表方法解析顺序.