gpt4 book ai didi

python - 有没有办法阻止 __init__ 方法的执行?

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

我有一个类Point。它的 __init__ 方法检查海龟 Canvas 上是否有一个点。如果它发现它已经存在,我需要阻止 init 进一步执行。

points = []
class Point():
def __init__(self, pen, points=points):
self.x = pen.xcor()
self.y = pen.ycor()
for point in points:
if point == (self.x, self.y, pen):
# here, I need to stop __init__ from executing
return True# this raises an error, but does not stop
#the function the way I want
points.append((self.x, self.y, pen))
self.pen = pen
self.get()

point1 = Point(p)

这是我得到的:

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
point1 = Point(p)
TypeError: __init__() should return None, not 'bool'

最佳答案

如错误消息所示,__init__() 应返回 None,而不是“bool”。将 return True 更改为纯粹的 return(相当于 return None)。

for point in points:
if point == (self.x, self.y, pen):
return
<小时/>

Its __init__ method checks if there is a point on turtle canvas. If it finds that it is there already, I need to prevent the init from any further execution.

也就是说,您遇到的困难表明存在设计缺陷。一个点不应该检查外部点列表并拒绝构建;相反,创建点的代码应该执行检查。

我会将循环从构造函数中提升出来,并让调用者进行检查。

关于python - 有没有办法阻止 __init__ 方法的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260609/

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