class Point:
def __init__(self, x, y, a, b):
self.a = a
self.b = b
self.x = x
self.y = y
if self.y ** 2 != self.x ** 3 + a * x + b: # 주어진 점이 곡선 위에 있는지 검사
raise ValueError('({}, {}) is not on the curve'.format(x, y))
def __eq__(self, other): # 두 점은 같은 곡선 위에 있고 그 좌푯값이 동일해야 함
return self.x == other.x and self.y == other.y and self.a == other.a and self.b == other.b
# 연습문제 2.2
def __ne__(self, other):
return not (self == other)
우리에게는 곡선 자체보다 곡선 위 개별 점들이 관심사다. 예를 들면, $y^2 = x^3 + 5x + 7$ 곡선에서 $(x,y) = (-1, 1)$ 인 점에만 관심을 가지면 된다. 따라서 특정 곡선의 한 점으로 Point 클래스를 정의한다.
곡선은 $y^2 = x^3 + ax + b$ 의 형식이므로 a 와 b 두 계숫값으로 곡선을 특정할 수 있다.