Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über das Schlüsselwort del und die Instanzmethode __del__(self)

Eine kurze Diskussion über das Schlüsselwort del und die Instanzmethode __del__(self)

巴扎黑
巴扎黑Original
2016-11-26 10:53:471526Durchsuche

Es gibt viele spezielle Methoden in Python, die __del__(self) ähneln. Einige davon, wie __gt__(), __le__() usw., können ihre ungefähren Funktionen anhand ihres Namens erraten, andere jedoch nicht nach Belieben . (Natürlich ist es möglich, dass ich der Einzige bin, der das tut.) Zum Beispiel werden hier __del__() und del angezeigt. Früher dachte ich, dass __del__() aufgerufen wird, wenn ein Objekt gelöscht wird. Nachdem ich jedoch immer wieder schriftliche Tests durchgegangen war, begann ich nach dem Scheitern, diese subtileren Punkte zu untersuchen ^_^!
Genug geplaudert und zur Sache kommen!
Wir wissen, dass del ein Objekt löscht. Genauer gesagt sollte es die Referenzanzahl des Objekts um eins verringern. Beachten Sie jedoch, dass __del__() nicht bei jedem Aufruf aufgerufen wird, da __del__() aufgerufen wird, wenn der Referenzzähler des Objekts auf 0 sinkt, wie das Beispiel zeigt:

>>> class C:
        def __del__(self):
        print("I'm vanishing...")
>>> c = C()
>>> b = c            # 注意,此时对C()的引用计数为2
>>> del b
>>>                  # 瞧,什么输出都没有,说明__del__()并没调用
>>> del c
I'm vanishing...     # 引用计数降为0后才被调用
>>>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn