Pythonの勉強 クラスについて

クラスについて勉強していたら、この例文に悩んだ。

リスト 2 : Point クラス

class Point:
def __init__(self, x1, y1):
self.x = x1
self.y = y1

# 2 点間の距離を求める
def distance(p1, p2):
dx = p1.x - p2.x
dy = p1.y - p2.y
return math.sqrt(dx * dx + dy * dy)

を眺めていて

>>> a = Point(0, 0)
>>> b = Point(10, 10)
>>> a.distance(b) 14.142135623730951

なんでPointクラスのインスタンスをdestanceに入れると距離の計算になるのか。
で、考えてみたけど、Pointクラスのインスタンスに引数を入れる事は、__init__の引数になっているんだと把握した。そうすれば、引数の入ったインスタンスを引数で指定することで、インスタンス内の二つの引数が自動的に入れられている。
__init__は便利なものですねって確認しました。