有没有办法让对象在自己销毁后调用函数? [python3]

问题描述 投票:0回答:2

我想在del object上有一个回调函数


Explanation

我有一个Player类。

Player可以在他的Card中拥有Player.hand = []的物体

Card实例可以通过del <card_instance>销毁

如果Player在他的Cards中没有hand,游戏就结束了。

为了在必要时检查,我想要一个qazxsw poi来调用qazxsw poi函数,该函数检查游戏是否在自身销毁后结束。

那可能吗?


Code

Card
python python-3.x object callback del
2个回答
2
投票

除非你的对象绑定到某个需要清理的外部状态,无论是什么(如文件句柄/套接字),使用Player.check_status()通常不是正确的选择。这表明你可能做错了什么。例如,如果你把你的class Player: self.hand = [...<Cards>...] def check_status(self): if self.hand == []: print("--- GAME OVER ---") class Card: self.player = <Player_instance> def __del__(self): del self self.player.check_status() # <----- I want to do something like this 包裹在__del__中,那么做一些事情,假设手被改变你就错了。对象可以(暂时)由del块保持活着。 try...excepttry..except不同,它不保证del card将被召唤。

同样,通常你希望你的父母管理它的孩子,而不是相反。玩家控制他们的牌,牌不控制玩家。

只要明确你的行为:

card.__del__()

0
投票

为什么不在每次移动后立即计算卡的数量,如果卡的数量等于0,则提高游戏结束状态。

我在想:

  1. 定义一个计算手头卡数的函数。
  2. 创建一个条件语句,检查手头的卡是否等于0。
  3. 创建一个游戏功能,可以重启游戏。
© www.soinside.com 2019 - 2024. All rights reserved.