| 
					
				 | 
			
			
				@@ -6,6 +6,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # __gt__ >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # __ge__ >=
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from functools import total_ordering
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class Rectangle:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,14 +34,68 @@ class Rectangle: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class Point:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def __init__(self) -> None:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pass
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __init__(self, x, y) -> None:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.x = x
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.y = y
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __eq__(self, other: object) -> bool:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return isinstance(other, Point) and \
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.x == other.x and self.y == other.y
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __hash__(self):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return hash((self.x, self.y))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@total_ordering
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Fruit:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __init__(self, name, price):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.name = name
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.price = price
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __eq__(self, value: object) -> bool:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if isinstance(value, (int, float)):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.price == value
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif isinstance(value, Fruit):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.price == value.price
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise ValueError
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __lt__(self, value):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if isinstance(value, (int, float)):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.price < value
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif isinstance(value, Fruit):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.price < value.price
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise ValueError
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def main():
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pass
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    apple = Fruit("Apple", 0.5)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    orange = Fruit("Orange", 1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    banana = Fruit("Banana", 1.6)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    lime = Fruit("Lime", 1.0)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana > 1.2) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana >= 1.2) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana == 1.2) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana != 1.2) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana < 1.2) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (banana <= 1.2) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple > orange) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple >= orange) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple == orange) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple != orange) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple < orange) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (apple <= orange) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange == lime) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange != lime) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange > lime) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange < lime) is False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange <= lime) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert (orange >= lime) is True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print('Good')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if __name__ == '__main__':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     main() 
			 |