除非将对象绑定到需要清理的外部状态(例如文件句柄/套接字),否则使用
__del__
通常不是正确的选择。这表明你可能做错了什么。例如,如果您将
del
在一个
try...except
,然后假设手已经换过,再做其他事情,你就错了。对象可以(暂时)由
try..except
块。
del card
是
不
同一件事
card.__del__()
,它不能保证
埃尔德勒斯
将被调用。
同样,通常你希望你的父母管理孩子,而不是相反。玩家控制他们的牌,牌不能控制玩家。
只需明确你的行为:
class Player:
def __init__(self):
self.hand = []
def add_card(self, card):
self.hand.append(card)
def remove_card(self, card):
self.hand.remove(card)
if not self.hand:
print('--- GAME OVER ---')