试着运行了一遍,然后系统给的结果我没看懂到底为什么错了,有谁知道吗?
题目如下:
【问题描述】以下代码设计了一个名为Pet的宠物类,该类有两个属性name和age,并有打印名字和年龄的show()成员方法,然后定义了一个Dog类,Dog类是Pet类的子类,有name、age、color三个属性,利用继承的性质,实现了对象相关信息的输出。
【输入形式】
无
【输出形式】
输出三行,分别是name:具体值,age:具体值,color:具体值
【样例输入】
无
【样例输出】
name: 旺财
age: 3
color: golden
【样例说明】
【评分标准】
需要填空补充代码(但是我补充的是错的)
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__方法下,且必须是在首行。
#!/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()
怎么拿积分