カテゴリ: Python 更新日: 2026/01/26

Pythonの特殊メソッド(__str__ / __repr__ / __eq__)を便利に使う方法をやさしく解説

Pythonの特殊メソッド(**str** / **repr** / **eq**)を便利に使う方法
Pythonの特殊メソッド(**str** / **repr** / **eq**)を便利に使う方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonで作ったクラスをprintすると、よくわからない文字が出るんですが、これは普通なんですか?」

先生

「それはPythonの仕組みがそのまま表示されている状態ですね。実は、表示のしかたは自分で決められます。」

生徒

「えっ、自分で? 比較するときも同じですか?」

先生

「はい。__str____repr____eq__という特殊なメソッドを使うと、とても分かりやすくなります。」

1. Pythonの特殊メソッドとは?

1. Pythonの特殊メソッドとは?
1. Pythonの特殊メソッドとは?

Pythonには「特殊メソッド」と呼ばれる、少し変わった名前のメソッドがあります。名前の前後にアンダースコアが二つずつ付いているのが特徴です。これらは、Pythonが内部で自動的に呼び出す決まりになっています。

例えば、printで表示するときや、==で比べるときなど、人が直接呼んでいなくてもPythonが裏で使っています。初心者の方は「自動で動く便利な仕組み」くらいに考えると大丈夫です。

2. __str__メソッドとは?

2. __str__メソッドとは?
2. __str__メソッドとは?

__str__は、「人が見るための文字の形」を決めるメソッドです。printを使ったときに、どのように表示されるかを指定できます。

例えるなら、名札に書く名前のようなものです。人に見せる前提なので、分かりやすさが大切です。


class User:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f"ユーザー名:{self.name}"

user = User("たろう")
print(user)

ユーザー名:たろう

もし__str__を書かなければ、意味の分かりにくい情報が表示されてしまいます。そのため、画面に表示するクラスではほぼ必須と言えます。

3. __repr__メソッドとは?

3. __repr__メソッドとは?
3. __repr__メソッドとは?

__repr__は、「開発者が中身を確認するための文字の形」を決めるメソッドです。少し難しく感じるかもしれませんが、「プログラムを作る人向けの表示」と覚えると理解しやすくなります。

荷物の中身を確認するためのラベルのような役割で、正確さが重視されます。


class User:
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return f"User(name='{self.name}')"

user = User("はなこ")
user

User(name='はなこ')

__str____repr__の両方がある場合、通常の表示では__str__が優先されます。どちらも書いておくと、表示と確認の両方で便利です。

4. __eq__メソッドとは?

4. __eq__メソッドとは?
4. __eq__メソッドとは?

__eq__は、「同じかどうか」を判断するためのメソッドです。==を使ったときに、自動的に呼び出されます。

何も設定しない場合、Pythonは「同じ場所にあるかどうか」で比べます。しかし、多くの場合は「中身が同じか」を比べたいですよね。


class User:
    def __init__(self, name):
        self.name = name

    def __eq__(self, other):
        return self.name == other.name

user1 = User("たろう")
user2 = User("たろう")

print(user1 == user2)

True

このようにすると、名前が同じユーザーは「同じもの」として扱われます。これは会員情報やデータ管理でとても役立ちます。

5. 3つの特殊メソッドを使うと何が良いのか

5. 3つの特殊メソッドを使うと何が良いのか
5. 3つの特殊メソッドを使うと何が良いのか

__str__で表示が分かりやすくなり、__repr__で中身を確認しやすくなり、__eq__で比較が直感的になります。これらを設定するだけで、クラスは一気に使いやすくなります。

特にPythonのオブジェクト指向プログラミングでは、「人に優しい表示」と「正しい比較」がとても重要です。難しい知識がなくても、基本を押さえるだけでコードの品質が大きく変わります。

カテゴリの一覧へ
新着記事
New1
Python
Pythonの特殊メソッド(__str__ / __repr__ / __eq__)を便利に使う方法をやさしく解説
New2
Python
Pythonのリストとは?基本の使い方と作成・操作のやり方をやさしく解説
New3
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
New4
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説
人気記事
No.1
Java&Spring記事人気No1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
No.2
Java&Spring記事人気No2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Python
Pythonで文字列を置換するには?replace()の使い方と正規表現の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.7
Java&Spring記事人気No7
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.8
Java&Spring記事人気No8
Python
Pythonでディレクトリ操作を完全解説!作成・削除・一覧取得の基本