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</code >, digunakan untuk mewakili kelas semasa. <p></p>Seterusnya, dalam kaedah __init__(), kami juga mencetak sekeping maklumat penyahpepijatan, dan kemudian kami boleh memulakan objek seperti yang diperlukan. <p></p>Akhir sekali, kami memanggil pembina MyClass untuk mencipta contoh objek <code>my_obj
. Apabila menjalankan kod di atas, kita boleh melihat output berikut: 调用了__new__()方法 调用了__init__()方法
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!