Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan fungsi __new__() untuk mencipta contoh objek dalam Python
Cara menggunakan fungsi __new__() untuk mencipta tika objek dalam Python
Fungsi __new__() ialah kaedah khas yang dibina ke dalam Python untuk mencipta tika objek. Berbeza dengan kaedah __init__(), kaedah __new__() dipanggil sebelum objek dijadikan instantiated Ia bertanggungjawab untuk mencipta objek dan mengembalikan contoh objek.
Dalam Python, apabila contoh objek dicipta, ia sebenarnya dilakukan dengan memanggil kaedah __new__() kelas. Kaedah __new__() bertanggungjawab untuk mencipta contoh objek, dan dalam proses memanggil kaedah __new__() kelas induknya, dan akhirnya mengembalikan contoh objek baharu.
Berikut ialah contoh kod untuk menggambarkan cara menggunakan kaedah __new__() untuk mencipta tika objek.
class MyClass(object): def __new__(cls, *args, **kwargs): print("调用了__new__()方法") instance = super().__new__(cls) return instance def __init__(self, *args, **kwargs): print("调用了__init__()方法") # 对象初始化操作 # 创建对象实例 my_obj = MyClass()
Dalam kod di atas, kami mentakrifkan kelas MyClass
, yang mengandungi kaedah __new__() dan __init__(). MyClass
,其中包含了__new__()和__init__()方法。
在__new__()方法中,我们首先打印了一条调试信息,然后通过调用super().__new__(cls)
方法来创建一个新的对象实例,并将该实例返回。注意,在调用super().__new__(cls)
时,我们传递了cls
作为参数,这是因为__new__()方法会接收一个参数cls
,用于表示当前类。
接下来,在__init__()方法中,我们同样打印了一条调试信息,然后可以根据需要进行对象初始化操作。
最后,我们调用MyClass的构造函数来创建对象实例my_obj
super().__new__(cls)
dan mengembalikan contoh itu. Ambil perhatian bahawa apabila memanggil super().__new__(cls)
, kami menghantar cls
sebagai parameter, kerana kaedah __new__() menerima parameter cls
, digunakan untuk mewakili kelas semasa. Seterusnya, dalam kaedah __init__(), kami juga mencetak sekeping maklumat penyahpepijatan, dan kemudian kami boleh memulakan objek seperti yang diperlukan. Akhir sekali, kami memanggil pembina MyClass untuk mencipta contoh objek my_obj
. Apabila menjalankan kod di atas, kita boleh melihat output berikut: 调用了__new__()方法 调用了__init__()方法Seperti yang dapat dilihat daripada output, kaedah __new__() dipanggil dahulu, dan kemudian kaedah __init__() dipanggil. Ini kerana apabila mencipta contoh objek, Python akan memanggil kaedah __new__() untuk mencipta objek, dan kemudian memanggil kaedah __init__() untuk memulakan objek. Perlu diambil perhatian bahawa kaedah __new__() ialah kaedah peringkat kelas, manakala kaedah __init__() ialah kaedah peringkat objek. Kaedah __new__() mesti mengembalikan contoh objek baharu, manakala kaedah __init__() tidak perlu mengembalikan sebarang nilai. 🎜🎜Oleh itu, dengan menggunakan kaedah __new__(), kita boleh melakukan beberapa pemprosesan khas sebelum objek dijadikan instantiated, seperti mengawal proses penciptaan objek, membetulkan permulaan objek, dsb. 🎜🎜Ringkasnya, kaedah __new__() ialah kaedah khas yang sangat berkuasa yang boleh memberikan cara yang lebih fleksibel untuk mencipta objek dalam beberapa kes. Dengan menguasai penggunaan kaedah __new__(), kita boleh lebih memahami pengaturcaraan berorientasikan objek Python dan menjadi lebih selesa dengan reka bentuk dan pelaksanaan kelas tersuai. 🎜
Atas ialah kandungan terperinci Cara menggunakan fungsi __new__() untuk mencipta contoh objek dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!