Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 遍历到基类_Python_Python 3.x_Multiple Inheritance - Fatal编程技术网

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内置类型”的评论让我觉得他们想停在层次结构的“中间”。