Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah __init__() Sentiasa Dipanggil Selepas __new__() dalam Python?

Mengapakah __init__() Sentiasa Dipanggil Selepas __new__() dalam Python?

Patricia Arquette
Lepaskan: 2024-12-18 01:56:09
asal
223 orang telah melayarinya

Why is __init__() Always Called After __new__() in Python?

Memahami Hubungan Antara __new__() dan __init__()

Kaedah __new__() dan __init__() dalam Python memainkan peranan penting dalam penciptaan dan permulaan contoh kelas. __new__() digunakan sebelum __init__() dan bertanggungjawab untuk membina contoh kelas baharu dengan memperuntukkan memori untuknya. Sebaliknya, __init__() digunakan untuk memulakan atribut instance dan melaksanakan sebarang persediaan yang diperlukan.

Sekarang, mari kita mendalami pertanyaan anda tentang mengapa __init__() sentiasa dipanggil selepas __new__(). __new__() direka untuk mengembalikan contoh baharu kelas yang dibuat. Selepas __new__() mencipta instance, ia dihantar sebagai parameter kepada __init__() untuk permulaan. Pelaksanaan berurutan ini memastikan bahawa __init__() boleh mengakses dan mengubah suai atribut kejadian selepas ia berjaya dibina.

Dalam contoh yang anda berikan, anda mungkin tertanya-tanya mengapa __init__() tidak dilaksanakan untuk kejadian sedia ada (cth., a2 dan a3). Ini kerana anda telah melaksanakan logik tersuai dalam __new__() yang menyemak contoh sedia ada dalam kamus _dict dan mengembalikannya jika ia ditemui. Dalam kes ini, __init__() dilangkau kerana tika itu telah dibuat dan dimulakan sebelum ini.

Untuk melaksanakan fungsi yang anda inginkan secara berbeza, anda boleh mempertimbangkan untuk menggunakan corak kilang standard dan bukannya mengubah suai __new__(). Corak kilang membolehkan anda memisahkan penciptaan objek daripada pelaksanaannya, memberikan lebih fleksibiliti dan kebolehgunaan semula dalam kod anda.

Atas ialah kandungan terperinci Mengapakah __init__() Sentiasa Dipanggil Selepas __new__() dalam Python?. 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