@pcdesign

Как получить список все классов из текущего файла?

Вот например, вот такой файл:
class A:
    pass


class B:
    pass


class C:
    pass


def get_all_classes_in_file():
    ''' Как добраться до всех классов, которые в этом файле лежат?'''


Как получить список всех классов?
Если совсем в лоб, то вот так:
import pyclbr
print(pyclbr.readmodule(__name__).keys())

Он выдаст просто названия классов в виде строки, но не в виде объекта, к которому можно обратится.
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Нужно знать имя модуля. Для основного скрипта (который непосредственно выполняешь) это будет '__main__'. ЕМНИП это имя можно узнать из магической переменной __name__.

import sys

def enum_classes(module_name: str = __name__):
  module = sys.modules[module_name]
  return [v for v in vars(module).values() if type(v) is type and v.__module__ == module_name]


Первая часть условия отсеет всё, кроме классов. Вторая по идее отсеет то, что попало в пространство имён через импорт типа "from X import Y".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы