Cara menggunakan fungsi __new__() untuk mencipta contoh objek dalam Python

WBOY
Lepaskan: 2023-08-22 12:28:48
asal
974 orang telah melayarinya

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()
Salin selepas log masuk

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

Dalam kaedah __new__(), kami mula-mula mencetak maklumat penyahpepijatan, kemudian mencipta tika objek baharu dengan memanggil kaedah 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__()方法
Salin selepas log masuk
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!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!