Как получить полное имя класса подкласса с помощью Python

#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__ или нет, решать вам.