Python继承中调用父类的构造函数对属性赋值怎么做

试着运行了一遍,然后系统给的结果我没看懂到底为什么错了,有谁知道吗?
题目如下:
【问题描述】以下代码设计了一个名为Pet的宠物类,该类有两个属性name和age,并有打印名字和年龄的show()成员方法,然后定义了一个Dog类,Dog类是Pet类的子类,有name、age、color三个属性,利用继承的性质,实现了对象相关信息的输出。

【输入形式】


【输出形式】

输出三行,分别是name:具体值,age:具体值,color:具体值
【样例输入】


【样例输出】

name: 旺财

age: 3

color: golden

【样例说明】
【评分标准】
需要填空补充代码(但是我补充的是错的)

img


运行结果

img

class  Dog(Pet): 这里加上分号
init前后改成双下划线

1、定义子类名称后面缺少冒号:(英文半角状态);
2、您报错最后一行是“属性错误”,Pet对象没有_init_。这是由于您拼写错误,class的“魔术方法”是__inin__,前后都是英文状态下双下划线。
3、您把类名写死了,如果父类改名称后,您的子类也得改。最好用super()调用父类方法,这样子更为灵活,不会因父类更名而被动修改子类代码。但要注意,super()第一个参数不用写。如 Pet.init(self, name, age) == super().init(name, age),两种写法同效,但后者更灵活。还要注意一点就是,用父类名称调用,不写圆括号,用super()调用圆括号必不可少。
4、对父类__init__的调用,只可以在子类__init__方法下,且必须是在首行。


  • 代码运行效果截屏图片

    img

  • 代码
#!/sur/bin/nve python
# coding: utf-8

class Pet:

    def __init__(self, name, age):
        self.name, self.age = name, age

    def show(self):
        print('name:', self.name, '\nage:', self.age)


#定义子类
class Dog(Pet):

    def __init__(self, name, age, color):
        # 调用父类的构造函数对属性name, age赋值。
        Pet.__init__(self, name, age)
        super().__init__(name, age)
        self.color = color

    def show(self):
        super().show()
        print("color:", self.color)

if __name__ == '__main__':
    myPet = Dog("旺财", 3, "golden")
    myPet.show()



怎么拿积分