Rumah > Artikel > pembangunan bahagian belakang > Contoh terperinci pemusnahan dan pelepasan objek kelas python
[Cadangan berkaitan: Tutorial video Python3 ]
_init__
Fungsi ini adalah pemusnah kelas ular sawa Fungsi ini akan dipanggil secara automatik apabila kitaran hayat objek kelas tamat dan ia digunakan terutamanya untuk melepaskan beberapa sumber yang diduduki oleh objek . __del__
2. Demonstrasi KodApabila objek kelas ini dicipta, ia akan memanggil fungsi
dan mencetak "kelas init">>> class demo(): ... def __init__(self): ... print("init class") ... print(self) ... def __del__(self): ... print("del class") ... print(self) ... >>>Apabila objek kelas ini dimusnahkan, ia akan memanggil fungsi
dan cetak "del class". __init__
__del__
Mula-mula gunakan pembolehubah a1 untuk merujuk objek kelas demo, kemudian cetak "kelas init" dan alamat objek yang dirujuk oleh pembolehubah a1
>>> a1 = demo() init class <__main__.demo instance at 0x7f328f7c6cb0> >>> >>> a2 = demo() init class <__main__.demo instance at 0x7f328f7c6d40> >>> >>> >>> >>> a1 = demo() init class <__main__.demo instance at 0x7f328f7c6d88> del class <__main__.demo instance at 0x7f328f7c6cb0> >>>
Gunakan pembolehubah a2 untuk rujukan Objek kelas demo yang lain mencetak "kelas init" dan alamat objek yang dirujuk oleh pembolehubah a2 0x7f328f7c6cb0
; 🎜>.
Akhirnya buat objek kelas demo dan gunakan pembolehubah a1 untuk menghalakannya semula Pada masa ini, a1 merujuk kepada objek kelas baharu, dan alamat rujukannya ialah 0x7f328f7c6d40
, kerana objek
" dicetak. 0x7f328f7c6cb0
0x7f328f7c6d40
2. Objek kelas hanya dalam fungsi
0x7f328f7c6d88
Tentukan fungsi create_demo Fungsi ini adalah untuk mencipta objek kelas demo dan menggunakan pembolehubah inst untuk merujuk kelas yang dibuat objek. 0x7f328f7c6cb0
del class 0x7f328f7c6cb0
Panggil fungsi create_demo() sekali Anda boleh melihat bahawa objek demo dibuat dan alamatnya ialah
>>> def create_demo(): ... inst = demo() ... >>> create_demo() init class <__main__.demo instance at 0x7f328f7c6cb0> del class <__main__.demo instance at 0x7f328f7c6cb0> >>> >>> >>> >>> create_demo() init class <__main__.demo instance at 0x7f328f7c6cb0> del class <__main__.demo instance at 0x7f328f7c6cb0> >>> >>> >>> >>> create_demo() init class <__main__.demo instance at 0x7f328f7c6cb0> del class <__main__.demo instance at 0x7f328f7c6cb0> >>>kemudian objek demo dikeluarkan serta-merta. 3. Objek kelas dikembalikan dalam fungsi
0x7f328f7c6cb0
0x7f328f7c6cb0
>>> def return_demo(): ... return demo() .... Seterusnya, laksanakan pernyataan Python:
>>> True True >>> return_demo() init class <__main__.demo instance at 0x7fc511eb8cb0> <__main__.demo instance at 0x7fc511eb8cb0> >>> >>> True del class <__main__.demo instance at 0x7fc511eb8cb0> True >>> >>> return_demo() init class <__main__.demo instance at 0x7fc511eb8cb0> <__main__.demo instance at 0x7fc511eb8cb0> >>> >>> >>> >>> True del class <__main__.demo instance at 0x7fc511eb8cb0> True >>> >>>dan lihat objek
dilepaskan. Kerana selepas atur cara melaksanakan fungsi return_demo(), didapati bahawa atur cara seterusnya tidak merujuk objek yang dikembalikan oleh return_demo(), jadi Python akan melepaskan ruang objek 0x7fc511eb8cb0
. return
0x7fc511eb8cb0
Lakukan operasi yang sama untuk kali kedua dan anda boleh melihat fenomena yang sama.
True
Fenomena segmen kod ini pada asasnya sama seperti segmen kod sebelumnya. 0x7fc511eb8cb0
0x7fc511eb8cb0
Seperti yang anda lihat, v1_demo dan v2_demo merujuk kepada objek kelas, jadi nilai v1_demo dan v2_demo tidak lagi
>>> v1_demo = None >>> v2_demo = None >>> print(v1_demo) None >>> print(v2_demo) None >>> True True >>> >>> v1_demo = return_demo() init class <__main__.demo instance at 0x7fc511eb8d88> >>> >>> print(v1_demo) <__main__.demo instance at 0x7fc511eb8d88> >>> >>> True True >>> >>> >>> v2_demo = return_demo() init class <__main__.demo instance at 0x7fc511eb8dd0> >>> >>> print(v2_demo) <__main__.demo instance at 0x7fc511eb8dd0> >>> True True >>> >>> >>> >>> >>> v1_demo = None del class <__main__.demo instance at 0x7fc511eb8d88> >>> >>> print(v1_demo) None >>>. Pada masa ini, objek
yang dirujuk oleh v1_demo dikeluarkan.
1. Gunakan pembolehubah global untuk merujuk objek kelas di dalam fungsi None
[Cadangan berkaitan: None
Tutorial video Python30x7fc511eb8d88
]
Atas ialah kandungan terperinci Contoh terperinci pemusnahan dan pelepasan objek kelas python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!