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!