「Pythonのオブジェクト指向プログラミング、そしてrepr()とstr()の重要性」
「Pythonのオブジェクト指向プログラミングとrepr()、str()の重要性」
PYTHON PROGRAMMING
Pythonクラスを使用するときのrepr()とstr()の背後にあるさまざまな側面を探る記事
Pythonクラスにはさまざまな側面があります。たとえば、空のクラスを作成することができます:
class MyClass: pass
それでも、センチネル値として使用できます。 __init__()
メソッドを追加することもできます:
class MyClass: def __init__(self, value): self.value = value
それでも非常に単純なクラスですが、この場合は特定の値を保持します。
Pythonクラスの素晴らしい力は、次のように型として使用できることです:
- 「Google Brainの共同創設者は、テック企業がAIのリスクを大げさに報じている」と主張しています
- チャットGPTを使用して複雑なシステムを構築する
- 「グーグルのAI研究によると、グラフデータのエンコーディングが言語モデルのパフォーマンスを複雑なタスクに向上させることが明らかになりました」
def foo(x: MyClass, n: int) -> list[MyClass]: return [x] * n
__init__()
メソッドを実装していない場合でも、それが存在しないということではありません。実際、上記の__init__()
メソッドをオーバーロードしています。これはPythonクラスのもう1つの重要な側面であり、覚えておく必要があることです。他のメソッド(__new__()
、__eq__()
、__setattr__()
など)もオーバーロードすることができます。これらのメソッドをオーバーロードしない場合、いくつかはデフォルトの実装を持っています(__init__()
、__new__()
、__setattr__()
、__eq__()
など)、他のメソッド(__lt__()
および__eq__()
以外のすべての比較メソッド、__getitem__()
、__setitem__()
、__len__()
)はデフォルトの実装を持っていません。
クラスは他のクラスを継承できます。以下のように:
class MyClass(dict): @staticmethod def say_hello(self): print("Hello!")
そして、上記のように、静的メソッドだけでなく、クラスメソッドも使用することができます。ミックスインクラスや抽象基底クラス、シングルトンなどを作成することもでき、時には非常に役立ちます。
Pythonクラスにはさまざまな側面があるため、それぞれを詳細に議論するのに何年もかかるでしょう。将来の記事では、それについて詳しく取り上げていきます。この記事では、__repr__()
メソッドと__str__()
メソッドの違いとパワーに焦点を当てます。
一見小さなトピックのように思えるかもしれませんが、実際には非常に重要です。Pythonクラスの実装は簡単ですが、良い実装にするにはさらなる努力が必要です…
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles