gpt4 book ai didi

python - Python 的继承错误

转载 作者:行者123 更新时间:2023-11-28 19:57:54 25 4
gpt4 key购买 nike

我有以下 code.py 文件:

class Shape:
def __init__(self, x, y):
self.x = x
self.y = y

def move(self, delta_x, delta_y):
self.x += delta_x
self.y += delta_y

class Square(Shape):
def __init__(self, side=1, x=0, y=0):
super().__init__(x, y)
self.side = side

class Circle(Shape):
def __init__(self, rad=1, x=0, y=0):
super().__init__(x, y)
self.radius = rad

我在 Python 解释器中运行代码是这样的:

>>>导入代码
>>> c = code.Circle(1)

我收到这个错误:

Traceback (most recent call last):<br>
...<br>
File "code.py", line 18, in __init__<br>
super().__init__(x, y)<br>
TypeError: super() takes at least 1 argument (0 given)<br>

我不明白为什么会出现此错误。我将 rad 值指定为 1 并且我假设因为我没有指定 x 和 y 值,Circle 应该使用默认值 x=0 和 y=0 并通过 super() 将它们传递给 Shape功能。我错过了什么?

顺便说一句,我使用的是 Python 2.7.1。

谢谢。

最佳答案

super 需要一个参数,这正是错误消息所说的。在您的情况下,您需要使用 super(Circle, self)super(Square, self)

有关详细信息,您可以查看 this SO question或者您可以查看官方文档。

请注意,除非您想做有趣的事情,否则可以简化代码

Shape.__init__(self, x, y)

在这两种情况下。在您了解 super 以及为什么它有用之前,我建议您远离它。作为一名高效的 Python 程序员,您可以过上幸福的生活而无需触及它。

关于python - Python 的继承错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576778/

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