Jadual Kandungan
Contoh
Output
Sebab
Selesaikan masalah
Rumah pembangunan bahagian belakang Tutorial Python Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek

Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek

Sep 24, 2023 pm 11:21 PM
kelas python __del__ kaedah Padam objek

Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek

__del__ ialah kaedah ajaib dalam Python. Kaedah ajaib ini membolehkan kami melaksanakan beberapa helah yang sangat kemas dalam pengaturcaraan berorientasikan objek. Mereka juga dipanggil kaedah Dunder. Kaedah ini dikenal pasti dengan dua garis bawah (__) yang digunakan sebagai awalan dan akhiran.

Dalam Python, kami mencipta objek menggunakan __new__() dan memulakannya menggunakan __init__(). Walau bagaimanapun, untuk memusnahkan objek kita mempunyai __del__().

Contoh

Mari buat dan padam objek -

class Demo:
   def __init__(self):
      print("We are creating an object.");
   # destructor
   def __del__(self):
      print("We are deleting an object.");

# Createing and deleting an object
ob = Demo();
del ob;

Output

We are creating an object.
We are deleting an object.

Sebab

Walau bagaimanapun, jika kelas mentakrifkan __del__ tetapi ia tidak dipanggil semasa memadam objek, mungkin terdapat banyak sebab -

    Pernyataan
  • del tidak semestinya memanggil __del__() - ia hanya mengurangkan kiraan rujukan objek dan memanggil __del__() jika ia mencapai sifar.

  • Kaedah
  • __del__() boleh dipanggil secara rawak. - Jika struktur data anda mengandungi pautan bulat, kiraan rujukan tidak akan kembali kepada sifar. Python menjalankan algoritma untuk mengesan kitaran sedemikian, tetapi pengumpul sampah mungkin berjalan beberapa lama selepas rujukan terakhir kepada struktur data hilang.

Selesaikan masalah

Berikut adalah pembaikan -

  • Jangan panggil __del__() terus - _del__() hendaklah memanggil close(), dan close() hendaklah memastikan ia boleh dipanggil berbilang kali pada objek yang sama.

  • Elakkan rujukan bulat - Gunakan modul weakref untuk mengelakkan rujukan bulat. Ia membolehkan anda menunjuk ke objek tanpa meningkatkan kiraan rujukannya. Modul Weakref juga boleh digunakan untuk mendapatkan contoh kelas

Atas ialah kandungan terperinci Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1598
276
Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek Kelas Python saya mentakrifkan kaedah __del__, tetapi ia tidak dipanggil apabila saya memadamkan objek Sep 24, 2023 pm 11:21 PM

__del__ ialah kaedah ajaib dalam Python. Kaedah ajaib ini membolehkan kami melaksanakan beberapa helah yang sangat kemas dalam pengaturcaraan berorientasikan objek. Mereka juga dipanggil kaedah Dunder. Kaedah ini dikenal pasti dengan dua garis bawah (__) yang digunakan sebagai awalan dan akhiran. Dalam Python, kami mencipta objek menggunakan __new__() dan memulakannya menggunakan __init__(). Walau bagaimanapun, untuk memusnahkan objek kita mempunyai __del__(). Contoh Mari buat dan padam objek - classDemo:def__init__(self):print("Wearecreatinganobject.");#d

Bagaimana untuk membuat senarai objek dalam kelas Python Bagaimana untuk membuat senarai objek dalam kelas Python Aug 19, 2023 pm 06:33 PM

Python ialah bahasa pengaturcaraan yang dinamik dan mahir dari segi teknikal yang menyokong pengaturcaraan berorientasikan objek (OOP). Pada teras OOP ialah konsep objek, yang merupakan contoh kelas. Dalam Python, kelas berfungsi sebagai cetak biru untuk mencipta objek dengan sifat dan kaedah tertentu. Kes penggunaan biasa dalam OOP adalah untuk mencipta senarai objek, di mana setiap objek mewakili contoh unik kelas. Dalam artikel ini, kita akan membincangkan proses mencipta senarai objek dalam kelas Python. Kami akan membincangkan langkah asas yang terlibat, termasuk mentakrifkan kelas, mencipta objek kelas itu, menambahkannya pada senarai dan melaksanakan pelbagai operasi pada objek dalam senarai. Untuk memberikan pemahaman yang jelas, kami juga akan memberikan contoh dan output untuk menggambarkan konsep yang dibincangkan. Jadi, mari kita selami

Cara Lulus Argumen ke Kelas Python `__init__` Cara Lulus Argumen ke Kelas Python `__init__` Jul 04, 2025 am 03:27 AM

Di Python, parameter lulus ke kaedah INIT kelas boleh dicapai dengan menentukan parameter kedudukan, parameter kata kunci dan nilai lalai. Langkah -langkah tertentu adalah seperti berikut: 1. Mengisytiharkan parameter yang diperlukan dalam kaedah INIT apabila menentukan kelas; 2. Lulus parameter dalam rangka atau menggunakan kata kunci apabila membuat contoh; 3. Tetapkan nilai lalai untuk parameter pilihan, dan parameter lalai mestilah selepas parameter bukan lalai; 4. Gunakan args dan *kwargs untuk mengendalikan bilangan parameter yang tidak menentu; 5. Tambah logik pengesahan parameter ke init untuk meningkatkan keteguhan. Sebagai contoh Classcar: definit __ (diri, jenama, warna = "putih"): self.brand = Brandself.c

Cara Menentukan Kelas Python Cara Menentukan Kelas Python Jul 03, 2025 am 02:10 AM

Untuk menentukan kelas Python, anda perlu memahami struktur dan tujuan, gunakan kata kunci kelas yang diikuti oleh nama kelas dan kolon, dan gunakan lekukan untuk menulis atribut dan kaedah secara dalaman. Nama kelas menggunakan tatanama unta besar, dan atribut dan kaedah merangkumi data dan operasi di dalam kelas. 1. Lulus Pemegang Letak boleh didapati apabila menentukan kelas kosong; 2. Atribut permulaan dilaksanakan melalui kaedah __init__, dan parameter pertama mestilah diri; 3. Definisi kaedah mesti bermula dengan diri sendiri, dan objek itu sendiri secara automatik diluluskan apabila dipanggil; 4. Warisan kelas ditentukan dalam kelas induk dalam kurungan subkelas, dan logik permulaan kelas induk dipanggil dengan super ().

Apakah atribut dan kaedah dalam kelas python? Apakah atribut dan kaedah dalam kelas python? Jun 24, 2025 am 12:19 AM

Di Python, atribut kelas dan atribut contoh digunakan untuk menyimpan data yang berkaitan dengan kelas atau contoh, sementara kaedah menentukan tingkah laku objek. ① Atribut kelas dikongsi oleh semua keadaan, seperti spesies; ② Atribut contoh adalah khusus untuk setiap objek, seperti nama; ③ Kaedah adalah fungsi yang ditakrifkan dalam kelas, dan menggunakan diri untuk mengakses data contoh, seperti kulit (); ④ Kaedah kelas (@classmethod) dan kaedah statik (@StaticMethod) menyediakan akses fleksibel kepada kelas atau contoh; ⑤ Atribut dan kaedah biasanya berfungsi bersama, seperti menggunakan kiraan atribut kelas untuk menjejaki bilangan contoh dan output melalui kaedah kelas total_dogs (). Struktur ini menjadikan pengaturcaraan berorientasikan objek lebih teratur dan dapat dipelihara.

Cara mendokumentasikan kelas python Cara mendokumentasikan kelas python Jul 04, 2025 am 03:25 AM

Untuk menulis dokumen Python yang baik, kunci adalah untuk mempunyai struktur yang jelas, tumpuan yang menonjol, dan mematuhi piawaian analisis alat. Pertama, docstring harus digunakan dan bukannya anotasi biasa untuk diiktiraf oleh alat Sphinx atau bantuan (); Kedua, adalah disyorkan untuk mengguna pakai format standard seperti Google Style untuk meningkatkan kebolehbacaan dan keserasian; maka setiap kelas dan kaedah harus mengandungi deskripsi fungsi, parameter, nilai pulangan dan deskripsi pengecualian; Di samping itu, adalah disyorkan untuk menambah contoh penggunaan untuk membantu memahami, dan menambah langkah berjaga -jaga atau amaran untuk mengingatkan masalah yang berpotensi.

Apakah peranan atribut __slots__ dalam kelas python, dan bagaimanakah ia dapat mengoptimumkan penggunaan memori? Apakah peranan atribut __slots__ dalam kelas python, dan bagaimanakah ia dapat mengoptimumkan penggunaan memori? Jun 13, 2025 am 12:23 AM

Di Python, __slots__ meningkatkan prestasi dengan mengehadkan sifat contoh dan mengoptimumkan penggunaan memori. Ia menghalang penciptaan kamus dinamik __Dict__, dan menggunakan struktur memori yang lebih padat untuk menyimpan sifat, mengurangkan overhead memori sejumlah besar keadaan, dan mempercepatkan akses atribut. Ia sesuai untuk senario di mana sejumlah besar objek, atribut yang diketahui dan perlu dikemas. Walau bagaimanapun, batasannya termasuk ketidakupayaan untuk menambah sifat secara dinamik (kecuali secara jelas termasuk __dict__), pelbagai kerumitan warisan, dan kesulitan debugging, jadi ia harus digunakan apabila memberi perhatian kepada prestasi dan kecekapan ingatan.

Apakah kelas di Python, dan bagaimana saya menentukannya? Apakah kelas di Python, dan bagaimana saya menentukannya? Jun 22, 2025 am 12:35 AM

Inpython, classesaredefinedusingtheclasskeywordarareusedtobundledataandfunctions.1.defineAclasswithattributesandmethods, bermula denganTheinitconstructor.2.useselfasthefastarstparametereVerymerymerymerfeFertotheinsheinst.3.creatheinsheinsheinsheinst

See all articles