我创建了一个“Animal”类,它接受参数name
和colour
,以及一个名为“Pig”的子类,它应该继承name
和colour
“动物”,但也应该采用新参数TailType
。
这是我到目前为止所做的:
class Animal(object):
def __init__(self, name, colour):
self.name = name
self.colour = colour
def get_name(self):
return self.name
def set_name(self, newName = ""):
self.name = newName
def set_colour(self, newColour = ""):
self.colour = newColour
def get_colour(self):
return self.colour
def __str__(self):
return self.get_name() + ' : ' + self.colour
class Pig(Animal):
def __init__(self, name, colour, tailType):
super().__init__()
self.tailType = tailType
当我初始化“Pig”类时,我不确定在__init__
定义中放入哪些参数;它应该是name
和colour
,还是name
+ colour
+ tailType
?
此外,这个子类是否继承了Animal的__str__
表示方法,还是必须在“Pig”子类中再写一次?
当我初始化一个子类时,我真的不确定哪些参数在哪里。我看了一些例子,他们都有一个非常简单的案例,有一个参数(自我)。
如果我尝试
john = Pig('John', 'pink', 'curly')
我得到了
TypeError: __init__() missing 2 required positional arguments: 'name' and 'colour'
。
超类和子类在概念上是有意义的,但是当谈到处理它们的语法时,我真的很挣扎。
注意:请不要参考我对超类构造函数的一般解释:我已经阅读了很多它们,但在这种情况下仍然不知道如何应用它们。
答案 0 :(得分:3)
只需通过name
和colour
。
class Pig(Animal):
def __init__(self, name, colour, tailType):
super().__init__(name, colour)
self.tailType = tailType
把它想象成super()
为我提供了来自父对象的方法,绑定到我的对象。作为输入需要什么? name
和colour
?我们将其传递给name
和colour
,然后再传递它。
是的,__str__
是像任何其他方法一样继承的。