pythonの絶対値を求めるabs()関数について述べます。複素数や独自のクラスで定義する絶対値についても述べます。
絶対値
pythonの組み込み関数の中にabs()という関数があります。これは絶対値を求める関数です。絶対値とは原点(ゼロ)からの距離になります。
引数に取れる型は、整数(int)、浮動小数点、__abs__()を実装したオブジェクトのみ。 以下の例の場合
print(abs(-1))
print(abs(-0))
print(abs(2))
print(abs(-2.5))
print(abs(complex(3,-4)))
結果は以下のようになります。
1 0 2 2.5 5.0
複素数は副素平面上で表されるためcomplex(3,-4)は実軸が3、虚軸が-4の点であり原点(0)からの距離は5になります。
__abs__()メソッドの実装
試しに自分で作ったクラスに__abs__()を実装して試してみます。
import math
class PlaneCoordinates:
x: float
y: float
def __init__(self, x:float=0, y:float=0):
self.x = x
self.y = y
def __abs__(self):
ans = math.sqrt(self.x * self.x + self.y* self.y)
return ans
print(abs(PlaneCoordinates(3,4)))
absメソッドにより独自に定義したdef __abs__()が呼ばれその結果が絶対値として帰って来ます。
5
引数で許されない型を指定した場合
以下のように引数として許されない型を指定します。
ans=abs("abc")
print(ans)
以下のようにTypeError例外が発生します。
Traceback (most recent call last): File "c:\Users\d-uehara\OneDrive\01.開発\22_DMYSD_Blog\blog\20210531_python_abs\example-3.py", line 1, inans=abs("abc") TypeError: bad operand type for abs(): 'str'
まとめ
この記事ではpythonの組み込みメソッドであるabsメソッドについてまとめました。クラスの場合__abs__()を定義することでabs()メソッドを呼び出した際の動きを定義できることを確認しました。また許されない型を指定した場合にはTypeErrorが発生することを確認しました。
Comment on this article
コメントはまだありません。
Send comments