{category}

Python - 特殊メソッド

__str__

ストラー(関数とクラス

意味 文字列で表現


__str__とは?

オブジェクトを文字列として表現する際に使用される特殊なメソッド。print関数などでオブジェクトを表示する際に、分かりやすい文字列を返すように定義します。

__str__の具体的な使い方

ユーザーフレンドリーな文字列表現

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

    def __str__(self):
        return f'"{self.title}" by {self.author} ({self.year})'

my_book = Book('Python入門', '山田太郎', 2023)
print(my_book)

👇出力結果

"Python入門" by 山田太郎 (2023)

Bookクラスを定義し、__str__メソッドで本のタイトル、著者、出版年を人間が読みやすい形式で返すように実装しています。printでオブジェクトを出力すると、この__str__メソッドが呼び出され、カスタマイズされた文字列が表示されます。

コレクション内のオブジェクト表示

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

    def __str__(self):
        return f'({self.x}, {self.y})'

points = [Point(1, 2), Point(3, 4), Point(5, 6)]
print('点の一覧:')
for point in points:
    print(point)

👇出力結果

点の一覧:
(1, 2)
(3, 4)
(5, 6)

Pointクラスを定義し、__str__メソッドで座標を(x, y)の形式で返すように実装しています。複数のPointオブジェクトをリストに格納し、forループで各オブジェクトを出力しています。各オブジェクトの__str__メソッドが自動的に呼び出され、読みやすい形式で座標が表示されます。

__str__に関するよくある質問

Q. __str__と__repr__の違いは?
A. __str__は人間が読みやすい形式でオブジェクトを表現するためのメソッドで、主にprint()関数で使用されます。一方、__repr__はより詳細で明確な表現を提供し、主にデバッグや開発者向けの出力に使用されます。__str__が定義されていない場合、__repr__が代わりに使用されます。
Q. __str__メソッドは必須?
A. __str__メソッドは必須ではありませんが、定義することでオブジェクトの文字列表現をカスタマイズできます。定義しない場合、デフォルトでオブジェクトのメモリアドレスなどの技術的な情報が表示されます。ユーザーフレンドリーな出力を望む場合は__str__を定義することをお勧めします。
Q. __str__で複雑な処理はOK?
A. __str__メソッドは単純な文字列表現を返すことが期待されており、複雑な処理や時間のかかる操作は避けるべきです。パフォーマンスに影響を与える可能性があるため、基本的な情報のフォーマットに留めることが推奨されます。複雑な処理が必要な場合は、別のメソッドを作成して呼び出す方が良いでしょう。

__str__が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonの__str__やassert、__next__、def、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Pythonを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

assert

条件をテスト

種類: アサーション

__next__

反復処理の次の要素

種類: 特殊メソッド

def

関数を定義

種類: 関数定義

<

左辺が右辺より小さいか判定

種類: 比較演算子

raise

意図的にエラーを発生

種類: 例外処理