• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Python / Pythonの__○○__の特殊メソッドの使い方についてまとめました

Pythonの__○○__の特殊メソッドの使い方についてまとめました

1 Pythonの特殊メソッド(__repr__,__str__,__bytes__,__bool__,__eq__)の利用方法
2 関連記事

Pythonの特殊メソッド(__repr__,__str__,__bytes__,__bool__,__eq__)の利用方法

pythonには、_(アンダースコア)が2つで始まり2つで終わる特殊メソッドと呼ばれるメソッドがある。

特殊メソッドは、明示しなくても特定の処理を実行した場合に内部で呼び出される。

例えば、
a + b
とするとき、内部で
a.__add__(b)
というようにaインスタンスの__add__()メソッドを呼び出す。

 

__init__, __new__, __del__なども代表的な特殊メソッドである。
(詳細はこちら)

Pythonには、以下のような特殊メソッドがある。

__repr__ repr(object)のとき、呼び出され、オブジェクトの情報を表す文字列を返す。
__str__ str(object),print(object)など呼び出され、オブジェクトを文字列に変換して返す。__str__が定義されていない場合__repr__が呼び出される
__bytes__ bytes(object)などで呼び出され、オブジェクトをbytes型で返す。
__hash__ オブジェクトのハッシュ値で返す。
__bool__ obj1 or obj2 のようなブール演算を行うとき、またはbool(obj)の場合に呼び出される

 

比較演算

< __lt__(self, object)
<= __le__(self, object)
== __eq__(self, object)
!= __ne__(self, object)
> __gt__(self, object)
>= __ge__(self, object)

 

  • 特殊メソッドの利用例(__repr__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self): # repr(Humanインスタンス)の際に呼び出される
        return "Humanオブジェクトです"

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

print(repr(taro)) # Humanオブジェクトです

  • 特殊メソッドの利用例(__str__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self): # str(Humanインスタンス)の際に呼び出される
        return "名前は{}で、年齢は{}です".format(self.name, self.age)

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

print(str(taro)) # 名前はTaroで、年齢は21です

  • 特殊メソッドの利用例(__bytes__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __bytes__(self): # bytes(Humanインスタンス)の際に呼び出される
        return "{}{}".format(self.name, self.age).encode("UTF-8") # nameとageを文字列にして、utf-8でencodeしてbytes配列にして返す

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

print(bytes(taro)) # b'Taro21'

  • 特殊メソッドの利用例(__hash__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __hash__(self): # hash(Humanインスタンス)の際に呼び出される
        return hash("{}{}".format(self.name, self.age)) # nameとageを文字列にし、hash値にして返す

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

print(hash(taro)) # -3906044921558198740(ハッシュ値)

  • 特殊メソッドの利用例(__bool__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __bool__(self): # 名前があるときはTrue、名前がないときはFalseを返す
        if self.name != "":
            return True
        return False

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

if (taro): # AAAAAAAAAA
    print("A" * 10)

if (nanashi): # 何も表示されない
    print("B" * 10)

  • 特殊メソッドの利用例(__eq__)
class Human:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __eq__(self, other): # object1 == object2の時呼び出される。nameとageが等しいときにTrueを返す
        if self.name == other.name and self.age == other.age:
            return True
        return False

taro = Human("Taro", 21)
jiro = Human("Jiro", 20)
taro_2 = Human("Taro", 21)
nanashi = Human("", 32)

print(taro == jiro) # False
print(taro == taro_2) # True

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 Pythonの特殊メソッド(__repr__,__str__,__bytes__,__bool__,__eq__)の利用方法
2 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約