Откуда наследуется конструктор? В python3 можно перегружать методы. Например:class A: def go(self): print('A!') class B(A): def go(self): print('B!') Здесь класс B наследуется от класса A. Но благодаря перегрузке в классе B метод go() был подменён. С этим понятно. Но не понятно каким образом можно перегружать в любом классе конструктор __init__(). Насколько я понимаю этот конструктор ни откуда не наследуется. например:class C: __init__(self, name): self.name = name Это самый обычный код, но class C не имеет родителя, судя по записи.
Конструктор __init__() в Python не наследуется от родительского класса, он должен быть определен в каждом классе отдельно. Если у вас есть класс C без родителя, вы все равно можете определить конструктор __init__() в этом классе, как вы показали в примере.
Пример с перегрузкой конструктора __init__() в классе с родителем выглядит следующим образом:
class A: def __init__(self, name): self.name = name class B(A): def __init__(self, name, age): super().__init__(name) self.age = age
В этом примере класс B наследуется от класса A, и в классе B определен новый конструктор __init__(), который принимает дополнительный аргумент age и вызывает конструктор класса A через super().__init__(name) для инициализации переменной name от родительского класса.
Конструктор __init__() в Python не наследуется от родительского класса, он должен быть определен в каждом классе отдельно. Если у вас есть класс C без родителя, вы все равно можете определить конструктор __init__() в этом классе, как вы показали в примере.
Пример с перегрузкой конструктора __init__() в классе с родителем выглядит следующим образом:
class A:def __init__(self, name):
self.name = name
class B(A):
def __init__(self, name, age):
super().__init__(name)
self.age = age
В этом примере класс B наследуется от класса A, и в классе B определен новый конструктор __init__(), который принимает дополнительный аргумент age и вызывает конструктор класса A через super().__init__(name) для инициализации переменной name от родительского класса.