__init__
) не определен в классе Python, то будет использован конструктор базового класса (если он есть). Если базового класса нет (наследуется от object
неявно), то будет создан объект с атрибутами по умолчанию, без какой-либо специальной инициализации.
Если в классе Python не определен конструктор (метод __init__
), то будет использован конструктор родительского класса.
Поведение:
TypeError
.Важно понимать:
super().__init__(...)
, чтобы избежать повторения кода и обеспечить правильную инициализацию родительских атрибутов.Пример:
class Parent:
def __init__(self, name):
self.name = name
class Child(Parent):
pass # Отсутствует конструктор
child = Child("Alice")
print(child.name) # Выведет: Alice
class ParentWithoutInit:
pass
class ChildWithoutInit(ParentWithoutInit):
pass
child2 = ChildWithoutInit() # Работает, так как ParentWithoutInit не имеет __init__
В первом примере Child
использует конструктор Parent
, инициализируя атрибут name
. Во втором примере, ни у ParentWithoutInit
, ни у ChildWithoutInit
нет конструктора, поэтому экземпляр создается без каких-либо атрибутов, заданных в конструкторе.