Je suis relativement nouveau dans la programmation orientée objet et je n'arrive pas à comprendre comment supprimer un objet instancié en python. Toute aide serait très appréciée.
if self.hit_Paddle(pos) == True or self.hit_Paddle2(pos) == True:
bar = bar + 1
if bar == 1:
global barbox1
barbox1 = barfill(canvas)
barbox1.canvas.move(barbox1.id, 253, 367)
if bar == 2:
global barbox2
barbox2 = barfill(canvas)
barbox2.canvas.move(barbox2.id, 293, 367)
if bar == 3:
global barbox3
barbox3 = barfill(canvas)
barbox3.canvas.move(barbox3.id, 333, 367)
if bar == 4:
global barbox4
barbox4 = barfill(canvas)
barbox4.canvas.move(barbox4.id, 373, 367)
if bar == 5:
global barbox5
barbox5 = barfill(canvas)
barbox5.canvas.move(barbox5.id, 413, 367)
bar = 0
time.sleep(0.2)
barbox1 = None
barbox2 = None
barbox3 = None
barbox4 = None
barbox5 = None
C'est le code, la principale chose que j'essayais pour supprimer les objets était barbox1 = None, mais cela ne semble pas fonctionner.
object.__del__(self)
est appelée lorsque l'instance est sur le point d'être détruite.
>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
L'objet n'est pas supprimé sauf si toutes ses références sont supprimées (comme cité par ethan)
Aussi, From Python référence officielle du document:
del x n'appelle pas directement x .del () - le premier décrémente le compte de référence pour x par un, et le dernier n'est appelé que lorsque le compte de référence de x atteint zéro
Qu'entendez-vous par delete
? En Python, la suppression d'une référence (ou d'un nom) peut être effectuée avec le mot clé del
, mais s'il existe d'autres noms pour le même objet, cet objet ne sera pas supprimé.
--> test = 3
--> print(test)
3
--> del test
--> print(test)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'test' is not defined
par rapport à:
--> test = 5
--> other is test # check that both name refer to the exact same object
True
--> del test # gets rid of test, but the object is still referenced by other
--> print(other)
5