如何在Python 3中向子类添加参数

时间:2017-10-30 02:01:25

标签: python python-3.x class subclass superclass

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")

这会抛出错误消息。我如何做这样的事情,我将参数添加到不属于超类的子类。

4 个答案:

答案 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")