ホーム > 記事 > Python > python入門 > 【Python】絶対値を求める | abs

記事

【Python】絶対値を求める | abs

pythonの絶対値を求めるabs()関数について述べます。複素数や独自のクラスで定義する絶対値についても述べます。

目次

  1. 絶対値
  2. __abs__()メソッドの実装
  3. 引数で許されない型を指定した場合
  4. まとめ

絶対値

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, in 
    ans=abs("abc")
TypeError: bad operand type for abs(): 'str'

 

↑目次

まとめ

この記事ではpythonの組み込みメソッドであるabsメソッドについてまとめました。クラスの場合__abs__()を定義することでabs()メソッドを呼び出した際の動きを定義できることを確認しました。また許されない型を指定した場合にはTypeErrorが発生することを確認しました。

↑目次

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください