カテゴリ: Python 更新日: 2026/03/02

Pythonの特殊メソッド(__str__ / __repr__ / __eq__)の活用方法を完全解説!初心者でもわかるオブジェクト指向入門

Pythonの特殊メソッド(__str__ / __repr__ / __eq__)の活用方法
Pythonの特殊メソッド(__str__ / __repr__ / __eq__)の活用方法

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

生徒

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

先生

「その表示は、Pythonの__str____repr__という特殊メソッドが関係しています。設定していないと、機械向けの表示になるんです。」

生徒

「特殊メソッドって何ですか?自分で呼び出すものなんですか?」

先生

「いいところに気づきましたね。特殊メソッドは、Pythonが自動で呼び出してくれる便利な仕組みです。順番に見ていきましょう。」

-

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

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

Pythonの特殊メソッドとは、メソッド名の前後にアンダースコアが二つずつ付いた特別なメソッドのことです。代表例として__str____repr____eq__があります。

これらは自分で直接呼び出すよりも、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)

ユーザー名は 太郎 です

3. __repr__メソッドとは?プログラム向けの正確な表現

3. __repr__メソッドとは?プログラム向けの正確な表現
3. __repr__メソッドとは?プログラム向けの正確な表現

__repr__メソッドは、主に開発者やプログラム向けの表示を担当します。デバッグやログ出力などで使われることが多く、「正確さ」を重視します。

何も設定しない場合、Pythonはクラス名とメモリ位置のような情報を表示しますが、初心者には意味がわかりにくいです。そのため、自分で定義することで理解しやすくなります。


class Book:
    def __init__(self, title, price):
        self.title = title
        self.price = price

    def __repr__(self):
        return f"Book(title='{self.title}', price={self.price})"

book = Book("Python入門", 2500)
print(book)

Book(title='Python入門', price=2500)

4. __str__と__repr__の違いを整理しよう

4. __str__と__repr__の違いを整理しよう
4. __str__と__repr__の違いを整理しよう

__str____repr__は似ていますが、目的が異なります。__str__は人間向け、__repr__はプログラム向けです。

たとえば、商品の値札が__str__、商品管理用の型番や内部情報が__repr__だと考えるとイメージしやすいでしょう。両方を定義しておくと、場面に応じた表示が可能になります。

-

5. __eq__メソッドとは?オブジェクト同士を比べる

5. __eq__メソッドとは?オブジェクト同士を比べる
5. __eq__メソッドとは?オブジェクト同士を比べる

__eq__メソッドは、==演算子でオブジェクト同士を比較するときに使われます。何も設定しない場合、Pythonは「同じ場所にあるかどうか」だけを見ます。

しかし、実務では「中身が同じかどうか」で判断したいことが多いため、__eq__を定義します。


class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)

True

6. 初心者がつまずきやすい注意点

6. 初心者がつまずきやすい注意点
6. 初心者がつまずきやすい注意点

特殊メソッドは便利ですが、いくつか注意点があります。まず、メソッド名は必ず正確に書く必要があります。アンダースコアの数を間違えると動きません。

また、__eq__では比較対象が同じクラスかどうかを確認しないと、思わぬエラーにつながることがあります。最初はシンプルな条件で書くのがおすすめです。

7. 特殊メソッドを使うメリット

7. 特殊メソッドを使うメリット
7. 特殊メソッドを使うメリット

特殊メソッドを使うことで、コードが読みやすくなり、意図が伝わりやすくなります。特にPythonのオブジェクト指向では、クラスの振る舞いを自然な形で定義できる点が大きな利点です。

初心者の方でも、表示や比較を自分でコントロールできるようになると、クラス設計の理解が一段深まります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
New2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
New3
PHP
PHPのforeachループを完全ガイド!初心者でもわかる配列・連想配列の処理
New4
PHP
PHPの配列の要素の追加・削除を解説!初心者でもわかるarray_push, array_pop, unsetの使い方
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.2
Java&Spring記事人気No2
Python
Pythonのダックタイピングとは?型チェックなしで動的に振る舞うOOP設計をやさしく解説
No.3
Java&Spring記事人気No3
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.5
Java&Spring記事人気No5
Python
Pythonのセット(set)とは?リストや辞書との違いを解説
No.6
Java&Spring記事人気No6
Python
Pythonで一時ファイルを作成・管理する方法!初心者でもわかるtempfileモジュール入門
No.7
Java&Spring記事人気No7
PHP
PHPのJWT認証を完全ガイド!初心者でもわかるJSON Web Tokenの基本と安全な仕組み
No.8
Java&Spring記事人気No8
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
-
-