小编Man*_*nny的帖子

我可以在 python 中获取一个类的实例来删除自身吗?

我试图通过调用创建类的主程序之外的方法来删除类的实例。我通过搜索发现,为了进行垃圾收集,实例必须没有引用者。del在主程序中使用语句可以做到这一点,但我还需要通过方法删除实例,否则实例将很快堆积起来。我的代码是这样的:

class Agent_type:
def __init__(self, type_name, properties):
    self.type_name = type_name
    self.properties = properties
    self.agent_set = set()


class Agent:

    def __init__(self, agent_type):
        self.properties = agent_type.properties
        self.agent_type = agent_type
        agent_type.agent_set.update([self])

    def kill(self):
        self.agent_type.agent_set.remove(self)
        del self


def kill(agent):
    agent.agent_type.agent_set.remove(agent)
    del agent

programmer = Agent_type('programmer', {'language' : 'python'})
agent_1 = Agent(programmer)
print(agent_1)
print(programmer.agent_set)
agent_1.die()
# kill(agent_1)
print(programmer.agent_set)
print(agent_1)
del(agent_1)
print(programmer.agent_set)
try:
    print(agent_1)
except:
    print("agent deleted")
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

<__main__.Agent object at 0x01A59290>
{<__main__.Agent object at 0x01A59290>}
set()
<__main__.Agent object at 0x01A59290>
set()
agent deleted …
Run Code Online (Sandbox Code Playgroud)

python reference instance

5
推荐指数
0
解决办法
2777
查看次数

标签 统计

instance ×1

python ×1

reference ×1