Как мне получить строку с именем класса? - PullRequest
42 голосов
/ 16 сентября 2008

Какой метод я вызываю, чтобы получить имя класса?

Ответы [ 5 ]

54 голосов
/ 16 сентября 2008
In [1]: class test(object):
   ...:     pass
   ...: 

In [2]: test.__name__
Out[2]: 'test'
36 голосов
/ 16 сентября 2008

Это не метод, это поле. Поле называется __name__. class.__name__ даст имя класса в виде строки. object.__class__.__name__ даст название класса объекта.

10 голосов
/ 17 сентября 2008

Я согласен с Mr.Shark, но если у вас есть экземпляр класса, вам нужно использовать его __class__ member:

>>> class test():
...     pass
...
>>> a_test = test()
>>>
>>> a_test.__name__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: test instance has no attribute '__name__'
>>>
>>> a_test.__class__
<class __main__.test at 0x009EEDE0>
1 голос
/ 17 сентября 2008

В [8]: str('2'.__class__)
Выход [8]: "<type 'str'>"

В [9]: str(len.__class__)
Выход [9]: "<type 'builtin_function_or_method'>"

В [10]: str(4.6.__class__)
Выход [10]: "<type 'float'>"

Или, как было указано ранее,

В [11]: 4.6.__class__.__name__
Выход [11]: 'float'

0 голосов
/ 06 декабря 2018

С Python 3.3 и далее мы можем использовать __qualname__ поле для обоих классов и функций.

Он отличается от __name__ поле для вложенных объектов, таких как класс, определенный в другом классе

>>> class A:
        class B:
            pass
>>> A.B.__name__
'B'
>>> A.B.__qualname__
'A.B'

, что может быть весьма полезно.

Дальнейшее чтение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...