Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Python・クラス】~メンバ②~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます。Shotaです。今日も早速、Pythonに関する記事を書いていきます。

今日は文字列表記、プロパティについて解説していきたいと思います。

【目次】

文字列表記

print関数では、様々な値を引数に入れて出力できました。しかし、自分で作成したクラスのインスタンスをprintで出力しても、思い通りの結果は得られません。例えば、Sampleクラスのインスタンスをprint関数で出力してみましょう。

#文字列を出力できないクラス
class Sample:
    def __init__(self, msg):
        self.message = msg

ob = Sample('Python')
print(ob)

実行すると、以下のような値がコンソールに出力されます。

<__main__.Sample object at 0x0000020599F2F1C0>

これでは、一体どのようなインスタンスなのかわかりません。インスタンスの内容がわかるように出力するためにはどうすればいいでしょうか。 print関数では、値を文字列に変換して出力をしています。クラスに、文字列として値を取り出すための仕組みを用意しておけば、printで出力できるようになります。使うメソッドは次の通りです。

#文字列を取り出す
def __str__(self):
    return 'text'

このメソッドを使うと、サンプルで作成したSampleクラスがprint関数で分かりやすく出力されています。

#文字列を取り出せるクラス
class Sample:
    def __init__(self, msg):
        self.message = msg

    def show(self):
        print(self.message)

    def __str__(self):
        return f'<Sample: message = "{self.message}">'

ins = Sample('Hello World')
print(ins)

▼実行結果

<Sample: message = "Hello World">

messageインスタンスの値が出力できます。これなら、インスタンスの中身を分かりやすく出力できます。

まとめ

【本日のまとめ】

  • printなどでテキストとして出力される値は、_str_メソッドで定義できる。

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日も今日に引き続いて「クラス」の解説をしていきます。

今日も最後まで読んでくださりありがとうございました!

  【参考図書】 『かんたんPython』――技術評論社