我有点难以理解如何在我的类中正确设置
我必须使用它来查看另一个圆是否包含在特定圆内(两者均由用户输入)。教授要求我们为此做两种不同类型的方法。
第一种方法我没有问题,更或多或少地了解其作用,如下所示:
然而,下一个方法将使用contains方法来实现同样的功能,以便我们可以在主函数中使用in调用它。这是我所拥有的全部内容:
contains
方法。我知道当调用它时,它会自动使用运算符in
,但我不确定如何正确设置它。我必须使用它来查看另一个圆是否包含在特定圆内(两者均由用户输入)。教授要求我们为此做两种不同类型的方法。
第一种方法我没有问题,更或多或少地了解其作用,如下所示:
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
当我尝试运行这个程序时,出现了多个错误。我认为我在self上漏掉了一些东西,但我不确定是什么?能否有人请尝试向我解释一下,当你编写像这样的包含方法时,需要做什么?
anotherCircle self
不就是在自身调用__contains__
吗?方法体中应该不是应该使用return self.contains(anotherCircle)
吗? - huggie__contains__
内部使用"in"时,你正在递归调用__contains__
。 - huggie