我对身材匀称和运算符的使用有疑问==
。有一个函数可以测试几何对象的相等性:.equals()
。但是==
不起作用。
Point((0, 2)).equals(Point((0,2))
返回真。
然而:
Point((0, 2)) == Point((0, 2))
返回 False
我希望能够使用==
运算符来检查 aPoint
是否已经存在于列表中。一个用例可能是:
if Point not in list_of_points:
list_of_points.append(Point)
据我了解,这不起作用,因为==
返回False
. 我知道存在in
使用该any()
函数的替代方法,但我更喜欢in
关键字:
if not any(Point.equals(point) for point in list_of_points):
list_of_points.append(Point)
__eq__
在中实施是否会付出很大的努力shapely/geometry/base.py
?您如何看待这种幼稚的实现__eq__
?
class BaseGeometry(object):
def __eq__(self, other):
return self.equals(other)
或者
class BaseGeometry(object):
def __eq__(self, other):
return bool(self.impl['equals'](self, other))