class Wolf:
def __init__(self, legs):
self.legs = 4
class Dog(Wolf):
def __init__(self, color):
self.color = color
fido = Dog(legs = 4, color = "brown")
这会抛出错误消息。我如何做这样的事情,我将参数添加到不属于超类的子类。
答案 0 :(得分:1)
试试这个:
class Wolf:
def __init__(self, legs):
self.legs = 4
class Dog(Wolf):
def __init__(self, legs, color):
super().__init__(legs)
self.color = color
fido = Dog(legs=4, color="brown")
答案 1 :(得分:0)
你仍然需要传递Dog
的leg参数,然后使用super
:
class Wolf:
def __init__(self, legs):
self.legs = 4
class Dog(Wolf):
def __init__(self, color, legs):
super().__init__(legs)
self.color = color
fido = Dog(legs = 4, color = "brown")
答案 2 :(得分:0)
以下是来自tutorial的示例,它解释了继承并说明了如何执行此操作。您需要调用父类的 init 函数,如本教程中的类似示例所示:
class Pet(object):
def __init__(self, name, species):
self.name = name
self.species = species
def getName(self):
return self.name
def getSpecies(self):
return self.species
def __str__(self):
return "%s is a %s" % (self.name, self.species)
class Dog(Pet):
def __init__(self, name, chases_cats):
Pet.__init__(self, name, "Dog")
self.chases_cats = chases_cats
def chasesCats(self):
return self.chases_cats
答案 3 :(得分:0)
这不是继承如何运作的。当您从另一个类继承时,超类的参数不会自动添加到子类的参数列表中。您必须在子类的构造函数中明确接受所需的参数,并将它们传递给超类的构造函数:
class Wolf:
def __init__(self, legs):
self.legs = 4
class Dog(Wolf):
def __init__(self, color, legs):
super().__init__(legs)
self.color = color
fido = Dog(legs = 4, color = "brown")