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

时间:2019-03-11 03:58:38

标签: python python-3.x object callback del

我要在del object上使用回调函数


说明

我有一个Player班。

Player的{​​{1}}中可以有Card个对象

Player.hand = []实例可以通过Card

销毁

如果del <card_instance>的{​​{1}}中没有Player,则游戏结束。

要仅在必要时检查,我希望Cards调用hand函数,以检查游戏在其自身销毁后是否结束

>

有可能吗?


代码

Card

2 个答案:

答案 0 :(得分:1)

除非您的对象与任何需要清除的外部状态相关联(例如文件句柄/套接字),否则使用__del__通常不是正确的选择。这表明您可能做错了什么。例如,如果将del包裹在try...except中,然后做其他事情(假设手已经换了),那就错了。 try..except块可以使对象(暂时)保持活动状态。 del cardcard.__del__()不是相同的事物,它不能保证__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 ---')

答案 1 :(得分:0)

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

我在想:

  1. 定义一个计算手牌数量的函数。
  2. 创建一个条件语句,以检查手牌是否等于0。
  3. 创建具有重新启动游戏功能的游戏结束功能。