私はオブジェクト指向プログラミングに比較的新しいので、Pythonでインスタンス化されたオブジェクトを削除する方法を理解できません。どんな助けでも大歓迎です。
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
これがコードです。オブジェクトを削除するために私が試みた主なことはbarbox1 = Noneでしたが、それはうまくいかないようです。
object.__del__(self)
は、インスタンスが破棄される直前に呼び出されます。
>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
すべての参照が削除されない限り、オブジェクトは削除されません(イーサンによる引用)
また、From Python公式ドキュメントリファレンス:
del xはxを直接呼び出しません。del()—前者はxの参照カウントを1つ減らし、後者はxの参照カウントがゼロに達する
delete
とはどういう意味ですか? Pythonでは、del
キーワードを使用して参照(または名前)を削除できますが、同じオブジェクトに他の名前がある場合、そのオブジェクトは削除されません。
--> 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
に比べ:
--> 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