gpt4 book ai didi

python - 在Python中使用super()方法

转载 作者:行者123 更新时间:2023-12-01 04:20:21 26 4
gpt4 key购买 nike

我必须使用 super() 方法创建一个从 Rectangle 类派生的 Square 类。我已经将它用于其他方法,当我在派生方法中使用它时,我只输入

super().__init__()

但是当我将它用于平方方法时,我收到错误

TypeError: __init__() missing 4 required positional arguments: 'x', 'y', 'width', and 'height'

如果对于一个正方形,我已经放入了它自己的初始化并且只需要 3 个参数,我会将 4 个参数放在哪里?

我不知道这是否重要,但 Rectangle 类是从另一个 Polygon 类派生的,也许我缺少一些东西?代码如下:

class Rectangle(Polygon):
def __init__(self, x, y, width, height):
super().__init__()
self.add_point( (x, y) )
self.add_point( (x + width, y) )
self.add_point( (x + width, y + height) )
self.add_point( (x, y + height) )


class Square(Rectangle):
def __init__(self,x,y,length, width):
super().__init__()
self.add_point( (x,y))
self.add_point( (x+length, y))
self.add_point( (x+length, y+ length))
self.add_point( (x, y+length))

最佳答案

当您调用 super().__init__() 时,请务必向其传递适当的参数。

super().__init__(x, y, 宽度, 高度)

解释一下:Square的上下文中,调用super().__init__()就是调用Rectangle.__init__ 因为它是子类。然后 Rectangle 的 __init__ 调用 super.__init__(),而 super.__init__() 又调用 Polygon.__init__()所有这些调用都需要为它们调用的 init 函数提供正确的参数。

关于python - 在Python中使用super()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com