c = Child(p)
- ошибка: конструктор не принимает никаких аргументов, кроме неявного self
.
Вам не нужно копировать lastName
, поскольку Child
наследуется от Parent
.Но так как вы определили __init__
в Child
, для этого необходимо также вызвать метод Parent
__init__
(иначе родительский конструктор не вызывается):
class Parent:
def __init__(self):
self.lastName = "Mustermann"
self.firstName = "Max"
def get_name(self):
return self.firstName+" "+self.lastName
class Child(Parent):
def __init__(self):
Parent.__init__(self)
self.firstName = "Moritz"
p=Parent()
c = Child()
print(c.get_name())
print:
Moritz Mustermann
Чтобы вызвать родительский метод __init__
, который мы использовали
Parent.__init__(self)
, мы могли бы также использовать super
следующим образом:
super(Child,self).__init__()
, что равновещь здесь (одиночное наследование), так что даже как:
super().__init__()