Konstantin18ko
@Konstantin18ko
Стоматолог

Как получить все классы в файле .py?

Есть файл в котором лежат классы.
class Class1(object):

    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name

class Class2(object):

    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name


Как получить все классы?
  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Как вариант, при условии что в файле 11.py фрагмент вашего кода:
import ast

for im in ast.walk(ast.parse(open('11.py').read())):
    if isinstance(im, ast.ClassDef):
        print(im.name)


Class1
Class2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Слово "лежат" вообще непонятное в контексте вопроса.
Но можно попробовать угадать чего хочет автор.
Я бы предложил такой вариант:
module = importlib.import_module('my_module_name')
classes = [
    value 
    for value in (
        getattr(module, name) 
        for name in dir(module)
    )
    if isinstance(value, type)
    and getattr(value, '__module__', None) == module.__name__
]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы