Траверс до базового класса - PullRequest
1 голос
/ 27 марта 2020

Я могу сделать следующее, чтобы получить имя класса, который я использую с экземпляром:

self.__class__.__name__

Есть ли способ получить имя базового класса, не вдаваясь ни в один из * 1009? * встроенные типы? Если так, то как это можно сделать? Например, если у меня есть:

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


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

Как я могу получить (не зная, сколько уровней наследования может быть)?:

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

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать mro() для типа объекта:

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

Здесь mro обозначает порядок разрешения метода .

...