Kita semua tahu bahawa fungsi terbina dalam Python repr() boleh menukar objek Nyatakan dalam bentuk rentetan untuk memudahkan pengecaman kami. Ini ialah "perwakilan rentetan". repr() menggunakan kaedah khas __repr__ untuk mendapatkan perwakilan rentetan objek. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin
>>> class Example: pass >>> print(str(Example()))>>> print(repr(Example()))>>> >>> str(Example) "" >>> repr(Example()) ''
Seterusnya mari kita lihat persamaan dan perbezaan antara **__str__** dan **__repr__** . Menurut dokumentasi Python rasmi:
__str__: dipanggil oleh str(objek) dan fungsi terbina dalam format() dan print() untuk menjana aksara "tidak formal" atau terbentuk dengan baik daripada objek Perwakilan rentetan. Nilai pulangan mestilah objek rentetan.
__repr__: dipanggil oleh fungsi terbina dalam repr() untuk mengeluarkan perwakilan rentetan "rasmi" sesuatu objek. Nilai pulangan mestilah objek rentetan Kaedah ini biasanya digunakan untuk penyahpepijatan. Pelaksanaan lalai yang ditakrifkan untuk objek jenis terbina dalam memanggil objek.__repr__().
Adakah anda keliru tentang format formal dan tidak formal? Tidak mengapa, mari lihat:
>>> 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, hasil pengembalian panggilan str() dan repr() Ia adalah sama,
Dan apabila y ialah jenis rentetan, hasil repr(y) ialah perwakilan rentetan "formal", manakala hasil str(y) ialah "tidak formal". str() membolehkan kami memahami kandungan objek dengan paling cepat dan lebih mudah dibaca.
>>> 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)' >>>
Dapat dilihat bahawa repr() boleh memaparkan jenis, nilai dan maklumat lain objek dengan lebih baik dan penerangan objek jelas.
Ia dipanggil apabila fungsi str() digunakan, atau apabila objek dicetak menggunakan fungsi cetakan, dan rentetan yang dipulangkan adalah lebih mesra kepada pengguna akhir.
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))
Hasil keluaran:
Name:Alice Name:Alice 姓名:Alice
Atas ialah kandungan terperinci Apakah persamaan dan perbezaan antara __str__ dan __repr__ dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!