Поскольку нет никакого фактического вопроса в вопросе, я собираюсь т ake это буквально:
Неправильно ли это делать динамически?
Ну, это практически непроницаемо, чрезвычайно непрозрачно и неочевидно для пользователя вашего кода (который включает вас через месяц: P).
Из моего опыта (довольно ограниченно, я должен признать, к сожалению, у меня нет 20 лет программирования под ремнем), потребность в таких решениях указывает на то, что структура класса не определена четко, означает, что есть почти всегда лучший, более читаемый и менее загадочный способ делать такие вещи.
Например, если вы действительно хотите определить базовые классы на лету, вам лучше использовать заводскую функцию, которая вернет соответствующие классы в соответствии с вашими потребностями.
Другой вопрос:
Неправильно ли это делать динамически?
В вашей текущей реализации это дает мне ошибку «Максимальная ошибка рекурсии превышена». Это происходит, потому что A.__new__
называет себя изнутри себя бесконечно (поскольку он наследует от себя и от B
).
10: Внутри A.__new__
, "cls" установлен на <class '.A'>
. Внутри конструктора вы определяете класс C
, который наследует от cls
(который фактически A
) и другого класса B
. После экземпляра C
вызывается его __new__
. Поскольку он не определяет свой собственный __new__
, его базовый класс «__new__
» вызывается. Базовый класс просто A
.
20: GOTO 10
Что вопрос? – 2010-01-08 09:33:32
На основании какого ответа? Вам не хватает ссылки? –
Roger, Dominic, Yup link отсутствует. Теперь обновите вопрос, соответственно. –