我试图学习python语法,但我不明白为什么下面的示例不起作用。我得到这个错误:
TypeError: __init__() takes 1 positional argument but 2 were given
代码:
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):
self.firstName = "Moritz"
self.lastName=Parent.lastName
p=Parent()
c = Child(p)
print(c.get_name())
我也不明白为什么父.lastName应该工作(根据我读到的)。Parent是一个类,那么它为什么要访问实例的lastName呢? 我真正想要的是孩子继承父母的姓,而不是名。你知道吗
孩子不一定是父母,而是父母。此外,名称不应该硬编码在
__init__
方法中,而是作为参数传递。不是每个Child
或Person
的实例都具有相同的名称(尽管在这个简单的示例中,子实例将共享其父实例的姓氏)。你知道吗(我将
Parent
改为Person
,因为Parent
类没有什么特别的父类。一个Child
仍然有一个Person
作为父级。)c = Child(p)
是一个错误:除了self
隐式参数外,构造函数不接受任何参数。你知道吗您不需要复制
lastName
,因为Child
继承自Parent
。但是由于您在Child
中定义了__init__
,因此您也必须为此调用Parent
__init__
方法(否则不会调用父构造函数):印刷品:
调用我们使用的父
__init__
方法我们也可以这样使用
super
:这和这里的情况(单一继承)是一样的,所以就像:
相关问题 更多 >
编程相关推荐