ホームページ >バックエンド開発 >Python チュートリアル >Python の __str__ と __repr__ の類似点と相違点は何ですか?
Python の組み込み関数 repr() がオブジェクトを変換できることは誰もが知っています。識別を容易にするために、文字列の形式で表現します。これが「文字列表現」です。 repr() は特別なメソッド __repr__ を使用して、オブジェクトの文字列表現を取得します。 __repr__ が実装されていない場合、ベクトル インスタンスをコンソールに出力すると、結果の文字列は
>>> class Example: pass >>> print(str(Example()))>>> print(repr(Example()))>>> >>> str(Example) "" >>> repr(Example()) ''
次に、**__str__** と **__repr__** の類似点と相違点を見てみましょう。 。公式 Python ドキュメントによると:
__str__: str(object) と組み込み関数 format() および print() によって呼び出され、「非公式」または整形式の文字を生成します。オブジェクトの文字列表現。戻り値は文字列オブジェクトである必要があります。
__repr__: repr() 組み込み関数によって呼び出され、オブジェクトの「公式」文字列表現を出力します。戻り値は文字列オブジェクトでなければなりません。このメソッドは通常、デバッグに使用されます。組み込み型オブジェクトに対して定義されたデフォルトの実装は、object.__repr__() を呼び出します。
公式形式と非公式形式について混乱していますよね?問題はありません。引き続き見てみましょう:
>>> 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))
も使用します)。出力結果:
Name:Alice Name:Alice 姓名:Alice
以上がPython の __str__ と __repr__ の類似点と相違点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。