Python 遍历到基类
我可以执行以下操作以获取我正在实例中使用的类的名称:Python 遍历到基类,python,python-3.x,multiple-inheritance,Python,Python 3.x,Multiple Inheritance,我可以执行以下操作以获取我正在实例中使用的类的名称: self.__class__.__name__ 有没有一种方法可以获取基类名称而不必超出任何django内置类型?如果是的话,那怎么办呢?例如,如果我有: class Wire: def __init__(self, default=True): self.state = default self.observers = [] class LED(Wire): """ For de
self.__class__.__name__
有没有一种方法可以获取基类名称而不必超出任何django内置类型?如果是的话,那怎么办呢?例如,如果我有:
class Wire:
def __init__(self, default=True):
self.state = default
self.observers = []
class LED(Wire):
"""
For debugging."""
我如何获得(不知道可能有多少级继承)?:
可以在对象的类型上使用:
type(l).mro()[1] # 0: the type itself, 1: base class in linear hierarchy, ...
这里mro代表方法解析顺序。您可以在对象的类型上使用:
type(l).mro()[1] # 0: the type itself, 1: base class in linear hierarchy, ...
在这里,mro代表方法解析顺序。这无助于OP提升层次结构的不确定方式(忽略多重继承带来的进一步复杂性)。@chepner如果它真的不确定,那么这将不会非常有用。IIUC他们要么想要得到直接基类(索引
1
),要么想要得到“最早的”基类(索引-2
)。这一切都应该在单个继承模式中工作。如果涉及多重继承,事情会变得更加复杂(尽管OP中没有提到)。他们在回答中明确表示,他们不知道可能涉及多少层次的继承。关于“[不]超越任何django内置类型”的评论让我觉得他们想停在层次结构的“中间”的某个地方。这无助于OP提升层次结构的未知方式(忽略多重继承带来的进一步复杂性).@chepner如果真的不确定,那就没什么用了。IIUC他们要么想要得到直接基类(索引1
),要么想要得到“最早的”基类(索引-2
)。这一切都应该在单个继承模式中工作。如果涉及多重继承,事情会变得更加复杂(尽管OP中没有提到)。他们在回答中明确表示,他们不知道可能涉及多少层次的继承。关于“[不]超越任何django内置类型”的评论让我觉得他们想停在层次结构的“中间”。