#python #python-3.x #subclass
#python #python-3.x #подкласс
Вопрос:
Мне нужно получить полное имя подкласса.
Пример:
class Foo:
class Bar:
pass
x = Foo.Bar()
print(x.__class__.__name__)
Вывод: панель
Ожидается: Foo.Bar
Комментарии:
1. Просто придирка, это будет «внутренний» класс, а не «вспомогательный» класс.
Bar
не наследует отFoo
. Однако я не решаюсь изменить вашу терминологию.
Ответ №1:
Вы можете использовать __qualname__
, это полное имя подкласса __class__
class Foo:
class Bar:
pass
x = Foo.Bar()
print(x.__class__.__qualname__)
#OUTPUT: Foo.Bar
Лучший способ — вызвать его на type
, он уже вызывается __class__
на экземпляре:
class Foo:
class Bar:
pass
x = Foo.Bar()
print(type(x).__qualname__)
#OUTPUT: Foo.Bar
Комментарии:
1. Вы потрясающие, большое вам спасибо за такой чистый ответ.
2. Даже не знал, что для этого есть методы dunder, полезно знать.
Ответ №2:
Используйте type
.
class Foo:
class Bar:
pass
x = Foo.Bar()
print(type(x))
<class '__main__.Foo.Bar'>
Разделять __main__
или нет, решать вам.