我有一个三维点类,根据探查器,它的哈希函数是进行优化的好地方。现在,我只是将坐标元组传递给内置哈希函数:
def __hash__(self):
return hash((self.x, self.y, self.z))
如何让它更快?我假设每次构建一个元组都不好。坐标是实值的。
答案 0 :(得分:5)
使用元组而不是自己的类会更快。
如果你真的想编写p.x而不是p [0],那么你可以使你的类成为元组的子类并具有访问器。它仍然比实现自己的元组快得多。
class Point3d(tuple):
@property
def x(self):
return self[0]
@property
def y(self):
return self[1]
@property
def z(self):
return self[2]
答案 1 :(得分:1)
尝试使用named tuple代替您自己的课程。