Как я могу получить имя класса, включая полный путь, из его корня модуля? Для Python 3.3 и выше?Получить полное имя класса Python (Python 3.3+)
Вот пример кода Python:
class A:
class B:
class C:
def me(self):
print(self.__module__)
print(type(self).__name__)
print(repr(self))
x = A.B.C()
x.me()
Этот код выводит меня на Python 3.3:
__main__
C
<__main__.A.B.C object at 0x0000000002A47278>
Так, Python внутренне знает, что мой объект __main__.A.B.C
, но как я могу получить это программно? Я могу разобрать repr(self)
, но это звучит как взлом для меня.
Возможный дубликат http://stackoverflow.com/questions/1401661/python-list-all-base-classes-in-a -иерархия заданного класса, пожалуйста, посмотрите там информацию об использовании через атрибут '__bases__' и предложения' inspect'module, порядок разрешения метода ('mro') также является интересной информацией, помимо формальной схемы отображения наследования. Поскольку это правило, какой метод (в случае множественного предложения) будет выбран как эффективная иерархия. – Dilettant
Проверьте атрибут ['__qualname__'] (https://docs.python.org/3/whatsnew/3.3.html#pep-3155-qualified-name-for-classes-and-functions). –