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!