Rumah > pembangunan bahagian belakang > Tutorial Python > Bilakah Adakah `__init__()` Tidak Mengikuti `__new__()` dalam Instantiation Kelas Python?

Bilakah Adakah `__init__()` Tidak Mengikuti `__new__()` dalam Instantiation Kelas Python?

Mary-Kate Olsen
Lepaskan: 2024-12-14 14:35:15
asal
772 orang telah melayarinya

When Does `__init__()` Not Follow `__new__()` in Python Class Instantiation?

Memahami Urutan __new__() dan __init__() Perlaksanaan

Python's __new__() dan __init__() kaedah memainkan peranan penting dalam kelas instansiasi. __new__() mencipta tika baharu kelas, manakala __init__() memulakan tika itu. Urutan pelaksanaan yang dijangkakan ialah untuk __new__() dipanggil sebelum __init__().

Walau bagaimanapun, senario tertentu boleh mengubah jujukan ini. Apabila melaksanakan kaedah __new__() tersuai, adalah mungkin untuk memanipulasi penciptaan contoh dan mengembalikan contoh sedia ada dan bukannya membuat yang baharu. Tingkah laku ini digunakan untuk melaksanakan corak seperti corak reka bentuk flyweight.

Dalam kes sedemikian, anda mungkin melihat __init__() dipanggil selepas __new__() walaupun ia tidak dijangka. __init__() sentiasa dipanggil selepas __new__() melainkan tersuai __new__() mengembalikan objek sedia ada.

Untuk menangani perkara ini, pertimbangkan untuk melaksanakan fungsi yang diingini dengan cara yang lebih konvensional, seperti menggunakan fungsi kilang. Sebagai alternatif, anda boleh memasukkan kod permulaan dalam kaedah __new__() tersuai. Walau bagaimanapun, pendekatan ini boleh dianggap "godam" dan tidak disyorkan sebagai amalan terbaik.

Atas ialah kandungan terperinci Bilakah Adakah `__init__()` Tidak Mengikuti `__new__()` dalam Instantiation Kelas 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