首页 > 解决方案 > 遍历到基类

问题描述

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

self.__class__.__name__

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

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


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

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

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

标签: pythonpython-3.xmultiple-inheritance

解决方案


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

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

这里mro代表方法解析顺序


推荐阅读