Kita semua tahu bahawa fungsi terbina dalam Python repr() boleh menukar objek dalam bentuk rentetan Express supaya kita dapat mengenal pastinya dengan mudah. Ini ialah "perwakilan rentetan". repr() memperoleh perwakilan rentetan objek melalui kaedah khas __repr__. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin
>>> 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>'
Seterusnya mari kita lihat persamaan dan perbezaan antara **__str__** dan **__repr__** . Menurut dokumentasi Python rasmi:
Anda keliru tentang format formal dan tidak formal, bukan? Tidak mengapa, mari teruskan:
>>> 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
Apabila x=4, apabila x ialah jenis integer, panggil str() dan repr() The. hasil pulangan "daripada. str() membolehkan kami memahami kandungan objek dengan paling cepat dan lebih mudah dibaca.
2.__str__ boleh dibaca dan matlamat __repr__ adalah jelas
Dapat dilihat bahawa repr() boleh memaparkan jenis, nilai dan maklumat lain objek dengan lebih baik Diterangkan dengan jelas.>>> 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)' >>>
dipanggil apabila fungsi str() digunakan, atau apabila objek dicetak menggunakan fungsi cetakan, dan rentetan yang dipulangkan adalah lebih mesra kepada pengguna akhir.
3. Tulis semula __repr__, yang juga akan menggunakan __str_
Hasil keluaran: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
Perbezaan:
__str__ Sasaran boleh dibaca, __str__() tidak dijangka mengembalikan ungkapan Python yang sah, tetapi ia boleh Gunakan lebih mudah atau lebih huraian yang tepat.Atas ialah kandungan terperinci Pemahaman menyeluruh tentang __str__ dan __repr__ dalam Python dalam satu artikel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!