ホームページ > バックエンド開発 > Python チュートリアル > Python の __str__ と __repr__ の類似点と相違点は何ですか?

Python の __str__ と __repr__ の類似点と相違点は何ですか?

WBOY
リリース: 2023-04-29 19:58:05
転載
1586 人が閲覧しました

__str__ と __repr__ の類似点と相違点は何ですか?

文字列の表現

Python の組み込み関数 repr() がオブジェクトを変換できることは誰もが知っています。識別を容易にするために、文字列の形式で表現します。これが「文字列表現」です。 repr() は特別なメソッド __repr__ を使用して、オブジェクトの文字列表現を取得します。 __repr__ が実装されていない場合、ベクトル インスタンスをコンソールに出力すると、結果の文字列は になる可能性があります。

>>> class Example: pass

>>> print(str(Example()))>>> print(repr(Example()))>>> 
>>> str(Example)
""
>>> repr(Example())
''
ログイン後にコピー

**__str__**vs.**__repr__**

次に、**__str__** と **__repr__** の類似点と相違点を見てみましょう。 。公式 Python ドキュメントによると:

  • __str__: str(object) と組み込み関数 format() および print() によって呼び出され、「非公式」または整形式の文字を生成します。オブジェクトの文字列表現。戻り値は文字列オブジェクトである必要があります。

  • __repr__: repr() 組み込み関数によって呼び出され、オブジェクトの「公式」文字列表現を出力します。戻り値は文字列オブジェクトでなければなりません。このメソッドは通常、デバッグに使用されます。組み込み型オブジェクトに対して定義されたデフォルトの実装は、object.__repr__() を呼び出します。

公式形式と非公式形式について混乱していますよね?問題はありません。引き続き見てみましょう:

1. どちらもオブジェクトを出力できます

>>> 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() を使用すると、オブジェクトの内容を最も早く理解でき、読みやすくなります。

2 .__str__ は読みやすく、__repr__ の目的は明確です。

>>> 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 関数を使用してオブジェクトが印刷されるときに呼び出され、返される文字列はエンド ユーザーにとってよりわかりやすいものになります。

3. __repr__ を書き換えます (__str__

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート