Implement methods Point.__hash__(), Vector.__hash__()
authorVivien Maisonneuve <v.maisonneuve@gmail.com>
Sat, 12 Jul 2014 07:56:13 +0000 (09:56 +0200)
committerVivien Maisonneuve <v.maisonneuve@gmail.com>
Sat, 12 Jul 2014 07:56:13 +0000 (09:56 +0200)
pypol/geometry.py

index ce055a4..ea751ae 100644 (file)
@@ -106,6 +106,9 @@ class Point(Coordinates, GeometricObject):
     def isorigin(self):
         return not bool(self)
 
     def isorigin(self):
         return not bool(self)
 
+    def __hash__(self):
+        return super().__hash__()
+
     def __add__(self, other):
         if not isinstance(other, Vector):
             return NotImplemented
     def __add__(self, other):
         if not isinstance(other, Vector):
             return NotImplemented
@@ -145,14 +148,18 @@ class Vector(Coordinates):
             initial = Point(initial)
         if terminal is None:
             coordinates = initial._coordinates
             initial = Point(initial)
         if terminal is None:
             coordinates = initial._coordinates
-        elif not isinstance(terminal, Point):
-            terminal = Point(terminal)
+        else:
+            if not isinstance(terminal, Point):
+                terminal = Point(terminal)
             coordinates = terminal._map2(initial, operator.sub)
         return super().__new__(cls, coordinates)
 
     def isnull(self):
         return not bool(self)
 
             coordinates = terminal._map2(initial, operator.sub)
         return super().__new__(cls, coordinates)
 
     def isnull(self):
         return not bool(self)
 
+    def __hash__(self):
+        return super().__hash__()
+
     def __add__(self, other):
         if isinstance(other, (Point, Vector)):
             coordinates = self._map2(other, operator.add)
     def __add__(self, other):
         if isinstance(other, (Point, Vector)):
             coordinates = self._map2(other, operator.add)