Apakah tujuan `__repr__` dalam Python dan bagaimana ia berbeza daripada `__str__`?

Susan Sarandon
Lepaskan: 2024-11-03 18:41:29
asal
527 orang telah melayarinya

What is the purpose of `__repr__` in Python and how does it differ from `__str__`?

Menyingkap Representer: Meneroka Enigma repr

Ekosistem kehebatan berorientasikan objek Python yang luas dihiasi oleh keluarga pelbagai kaedah kaedah dunder, masing-masing direka dengan teliti untuk memenuhi keperluan tertentu. Di antara panteon ini terdapat __repr__ yang membingungkan, entiti mistik yang diselubungi misteri dan penting kepada alam representasi objek.

Anggap diri anda seorang penyiasat berani yang ditugaskan untuk merungkai enigma __repr__. Pencarian anda bermula dengan pemeriksaan anatominya, seperti yang ditunjukkan oleh coretan kod rumit yang dibentangkan:

<code class="python">def __repr__(self):
  return '<%s %s (%s:%s) %s>' % (
    self.__class__.__name__, self.urlconf_name, self.app_name,
    self.namespace, self.regex.pattern)</code>
Salin selepas log masuk

Sintaks samar repr menyembunyikan tujuan yang mendalam. Ia memperkasakan objek dengan keupayaan untuk menyatakan representasi dalaman mereka yang boleh dilihat, gambaran yang menyaring intipati mereka ke dalam format yang boleh dibaca. Perwakilan ini melangkaui batasan daya tarikan visual semata-mata; ia berfungsi sebagai pelan tindakan untuk mencipta semula objek, membolehkan ia dibangkitkan daripada penjelmaan simboliknya.

Kepentingan repr melangkaui peranannya sebagai penyelamat. Ia adalah saluran yang dipilih untuk mempersembahkan objek dalam cengkerang interaktif, taman permainan interaktif untuk pengaturcara untuk bermain-main dan meneroka. Dengan mengatasi __repr__, anda menggunakan kuasa untuk menyesuaikan cara objek anda digambarkan, mengubahnya daripada entiti yang membingungkan kepada rakan yang boleh difahami.

Walau bagaimanapun, tanggungjawab repr berakhir di mana pemerintahan str__ bermula. Walaupun __repr mengutamakan perwakilan mesra pembangun, str mengambil alih tugas untuk memenuhi keperluan pengguna akhir. Ia bertujuan untuk mencipta representasi yang bergema dengan kepekaan manusia, tafsiran yang melukiskan gambaran yang jelas dan ringkas.

Untuk menggambarkan perbezaan bernuansa, pertimbangkan coretan kod berikut:

<code class="python">class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __repr__(self):
        cls = self.__class__.__name__
        return f'{cls}(x={self.x!r}, y={self.y!r})'</code>
Salin selepas log masuk

Meminta repr menghasilkan output yang disesuaikan untuk pembangun:

>>> p = Point(1, 2)
>>> print(repr(p))
Point(x=1, y=2)  # Developer-centric representation
Salin selepas log masuk

Sebaliknya, str menghasilkan paparan yang lebih mesra pengguna:

>>> print(str(p))
(1, 2)  # User-friendly representation
Salin selepas log masuk

Oleh itu, repr muncul sebagai alat yang sangat diperlukan untuk membuat perwakilan objek yang dipesan lebih dahulu, instrumen untuk nyahpepijat dan introspeksi. Ia mendedahkan kerja dalaman objek, menghilangkan kerumitan mereka dan memudahkan kebangkitan mereka. Rakannya, __str__, mengambil alih peranan penterjemah, menjadikan objek dalam bentuk yang sejajar dengan pemahaman manusia. Bersama-sama, kaedah dunder ini mengatur permaidani yang bertenaga bagi perwakilan objek Python, memperkasakan pembangun untuk berinteraksi dengan objek dalam kedua-dua cara yang bermaklumat dan mesra pengguna.

Atas ialah kandungan terperinci Apakah tujuan `__repr__` dalam Python dan bagaimana ia berbeza daripada `__str__`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan