我无法理解如何正确设置contains我班上的方法。我知道当你调用它时它会自动使用运算符“in”,我只是认为我不明白如何正确设置它。
我必须使用它来查看 anotherCircle 是否包含在特定的圆圈内(均来自用户输入)。教授让我们为此采用两种不同类型的方法。
第一个我没有问题,或多或少明白它在做什么,如下:
def contains(self, circle2d):
dist = math.sqrt((circle2d._x - self._x)**2 + (circle2d._y - self._y)**2) #Distance of second circle's coords from the first circle's coords
if dist + circle2d._radius <= self._radius:
return True
然而,下一个方法应该做同样的事情,使用contains方法,以便我们可以调用它in在主函数中。我所拥有的就是这个:
def __contains__(self, anotherCircle):
if anotherCircle in self:
return True
当我尝试运行此程序时,出现多个错误。我想我错过了一些关于自我的东西,但我不确定是什么?有人可以试着向我解释一下当你写一篇文章时你到底需要做什么吗?contains像这样的方法?
The __contains__
对象上的方法没有call in
;相反,这就是in
接线员呼叫。
当你写的时候
if circle1 in circle2:
python解释器会看到circle2
是一个 Circle 对象,并且会寻找__contains__
为其定义的方法。它本质上会尝试调用
circle2.__contains__(circle1)
这意味着你需要写你的__contains__
方法不使用in
,否则你将编写一个永无止境的递归方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)