import math class Line: def __init__(self, m, b): self.m = m self.b = b def __call__(self, x): return self.m * x + self.b @classmethod def from_points(cls, p1, p2): x1, y1 = p1 x2, y2 = p2 m = (y2 - y1) / (x2 - x1) b = y1 - m * x1 return cls(m, b) @classmethod def from_point_and_slope(cls, point, m): b = point.y - m * point.x return cls(m, b) def __repr__(self): m = self.m b = self.b return f'Line({m=}, {b=})'