11.2.10インスタンスを関数的に呼び出す
>>> import math
>>> class Coordinate:
... def __init__(self, x, y):
... self.x = x
... self.y = y
... #c(x, y)形式で呼び出せ、距離を求める
... def __call__(self, o_x, o_y):
... return math.sqrt(
... (o_x - self.x)** 2 + (o_y - self.y)** 2)
...
>>> if __name__ =='__main__':
... c = Coordinate(10, 20)
... print(c(5, 15))
...
7.0710678118654755
>>>
1.必要なモジュールのインポート:
import math: 数学関連の関数や定数を利用するためにmathモジュールをインポートします。
2.Coordinate クラスの定義:- このクラスは2Dの座標を表します。
3.初期化メソッド (__init__):def __init__(self, x, y)::オブジェクトを初期化するための特殊メソッドです。self.x = xとself.y = y:初期化時に与えられた x と y の値をオブジェクトの属性として保存します。
4.コールメソッド (__call__):def __call__(self, o_x, o_y)::この特殊メソッドを定義することで、オブジェクトを関数のように呼び出せるようになります。return math.sqrt((o_x - self.x)** 2 + (o_y - self.y)** 2):与えられた点(o_x, o_y)とオブジェクトの座標(self.x, self.y)間のユークリッド距離を計算して返します。
5.メイン実行部分:if __name__ =='__main__'::このコードは、このファイルが直接実行されたときのみ実行されます。c = Coordinate(10, 20):Coordinateクラスのインスタンスを作成し、その座標を(10, 20)に設定します。print(c(5, 15)):cオブジェクトを関数のように呼び出し、点(5, 15)との間の距離を計算し、結果を出力します。
結果として、座標 (10, 20) と (5, 15) の間の距離が 7.0710678118654755 として出力されます。
コメント