ホームページ >バックエンド開発 >Python チュートリアル >Python の __str__ と __repr__ を 1 つの記事で徹底的に理解する
Python の組み込み関数 repr() がオブジェクトを文字列の形式に変換できることは誰もが知っています。それを簡単に識別できるということです。これが「文字列表現」です。 repr() は、特別なメソッド __repr__ を通じてオブジェクトの文字列表現を取得します。 __repr__ が実装されていない場合、ベクトル インスタンスをコンソールに出力すると、結果の文字列は
>>> class Example: pass >>> print(str(Example())) <__main__.Example object at 0x10a514f98> >>> print(repr(Example())) <__main__.Example object at 0x1088eb438> >>> >>> str(Example) "<class '__main__.Example'>" >>> repr(Example()) '<__main__.Example object at 0x1088eb438>'
次に、**__str__** と **__repr__** の類似点と相違点を見てみましょう。公式 Python ドキュメントによると:
公式形式と非公式形式について混乱していますよね?問題はありません。引き続き見てみましょう:
>>> x = 4 >>> repr(x) '4' >>> str(x) '4' >>> y = 'pythonic' >>> repr(y) "'pythonic'" >>> str(y) 'pythonic' >>> z = '4' >>> repr(z) "'4'" >>> str(z)# 注意,此处的输出结果形式跟str(x)一样,但x和z的类型并不一样 '4' >>> str(x) == str(z) True >>> repr(x) == repr(z) False >>> str(4) == str("4") True >>> repr(4) == repr("4") False
x=4 の場合、x が整数型の場合、str() と repr の呼び出しの戻り() 結果は同じです。
y が文字列型の場合、 repr(y) の結果は「形式的な」文字列表現ですが、 str(y) の結果は「非形式的」です。 「。」 str() を使用すると、オブジェクトの内容を最も早く理解でき、読みやすくなります。
>>> import datetime >>> d = datetime.datetime.now() >>> str(d) '2020-04-04 20:47:46.525245' >>> repr(d) 'datetime.datetime(2020, 4, 4, 20, 47, 46, 525245)' >>>
repr() はオブジェクトの型、値、その他の情報をより適切に表示できることがわかります。オブジェクトの説明が明確です。
これは、str() 関数が使用されるとき、または print 関数を使用してオブジェクトが印刷されるときに呼び出され、返される文字列はエンド ユーザーにとってよりわかりやすいものになります。
class Student(): def __init__(self, name): self.name = name def __str__(self): return "Name:" + self.name def __repr__(self): return "姓名:" + self.name class_one = Student("Alice") print(class_one) print(str(class_one)) print(repr(class_one))
も使用する __repr__ を書き換えます。出力結果:
Name:Alice Name:Alice 姓名:Alice
共通点: これらはすべて出力に使用されます。オブジェクト
違い:
以上がPython の __str__ と __repr__ を 1 つの記事で徹底的に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。