Как получить путь к классу в Python - PullRequest
1 голос
/ 03 августа 2020

В Python мы можем определить класс и распечатать его как таковой:

class a:
    num = 1

b = a()

print(b)

И мы получим результат:

<class '__main__.a'>

Я пытаюсь идентифицировать уникальные классы, и у меня есть несколько классов с более длинными путями. Я хотел бы извлечь «путь к классу» или __main__.a в приведенном выше случае. Например, если я напечатаю какой-то более длинный класс, я получу:

<class 'django_seed.tests.Game'>
<class 'django_seed.tests.Player'>
<class 'django_seed.tests.Action'>

И я хотел бы извлечь:

'django_seed.tests.Game'
'django_seed.tests.Player'
'django_seed.tests.Action'

Поскольку я могу преобразовать <class 'django_seed.tests.Game'> в строку, я можно легко подставить его с помощью '<class 'django_seed.tests.Game'>'[8:-2], но я уверен, что должен быть более чистый способ. Спасибо!

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Атрибут __module__ может использоваться для доступа к «пути» класса (где он был определен), а атрибут __name__ возвращает имя класса в виде строки

print(f'{YourClass.__module__}.{YourClass.__name__}')
0 голосов
/ 03 августа 2020

Вы можете использовать inspect:

import inspect

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