Что такое __qualname__ в Python? - PullRequest
       30

Что такое __qualname__ в Python?

0 голосов
/ 26 сентября 2019
  • Что такое __qualname__ в python и как это полезно?

  • Зачем мне использовать его над __name__?

Я прочитал документы , но они не помогли мне получить четкое представление о его полезности.

Я прочитал Получить полностью определенное имякласса Python (Python 3.3 +) .
Этот вопрос задает "как получить квалифицированное имя" , что предполагает, что кто-то знает значение "квалифицированное имя" .Очевидно, что ответом на этот вопрос является использование атрибута __qualname__.

Мой вопрос спрашивает , что такое __qualname__, и , почему следует использовать его поверх__name__.

1 Ответ

1 голос
/ 26 сентября 2019

__qualname__ дает более полную информацию, чем __name__ и, следовательно, может быть более полезным при отладке, например.

Пример:

>>> def f(): pass
... class A:
...    def f(self): pass
...    class A:
...        def f(self): pass
...
>>> # __name__ is not showing the path, so these functions look equal
>>> f.__name__
'f'
>>> A.f.__name__
'f'
>>> A.A.f.__name__
'f'
>>> # And these classes looks equal
>>> A.__name__
'A'
>>> A.A.__name__
'A'
>>>
>>> # __qualname__ shows the path, so these functions are distinguishable
>>> f.__qualname__
'f'
>>> A.f.__qualname__
'A.f'
>>> A.A.f.__qualname__
'A.A.f'
>>> # And these classes are distinguishable
>>> A.__qualname__
'A'
>>> A.A.__qualname__
'A.A'

__qualname__ также добавляет некоторыеобратная совместимость с Python 2 .im_class.

Более подробно в обосновании для PEP 3155

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