Я хотел бы иметь метод __init__()
, который запускается только в базовом классе, но не запускается в дочерних классах.
Учитывая код здесь:
class base:
def __init__(self):
print('Only print this if I am base')
class ext(base):
...
foo = ext()
Я получаю следующий результат:
Only print this if I am base
Чем я не являюсь, так что это не то, что я хочу.
Решением может быть просто лучшая архитектура.Очевидно, что ext
не является на самом деле расширением base
, поскольку base
делает то, что ext
не делает.
Возможно, двойное наследование является решением проблемы.Имейте базовое наследование от i_print_an_init_message
класса и поместите туда __init__()
.Хотя это кажется излишним.
Также проверка имени класса, чтобы увидеть, выглядит ли имя base
неуместным.
Или, может быть, у меня просто есть аргумент в init, который по умолчанию равенFalse
.
Есть ли какой-нибудь особенно питонский способ сделать это?
(Пожалуйста, предположите, что я ответил на все комментарии «Почему вы это делаете?». Спасибо!)