gpt4 book ai didi

python - 如何删除该类中某个类的实例?

转载 作者:行者123 更新时间:2023-12-01 09:33:44 27 4
gpt4 key购买 nike

我想知道如何删除类中的实例。我正在尝试 del self,但它似乎不起作用。这是我的代码:

class Thing:

def __init__(self):
self.alive = True
self.age = 0

def update(self):
self.age += 1

def kill(self):
if self.age >= 10:
del self

def all(self):
self.update()
self.kill()

things = []

for i in range(0, 10):
thing.append(Thing())

while True:
for thing in things:
thing.all()

我特别想删除类内的实例。我也将del self替换为self = None,但是这个语句似乎没有任何效果。我怎样才能做到这一点?

最佳答案

您无法完全满足您的要求。 Python 的 del 语句不是这样工作的。但是,您可以做的是将您的实例标记为死亡(您已经有一个属性!),然后过滤对象列表以删除死亡实例:

class Thing:
def __init__(self):
self.alive = True # use this attribute!
self.age = 0

def update(self):
self.age += 1

def kill(self):
if self.age >= 10:
self.alive = False # change it's value here rather than messing around with del

def all(self):
self.update()
self.kill()

things = []

for i in range(0, 10):
things.append(Thing())

while True:
for thing in things:
thing.all()

things = [thing for thing in things if thing.alive] # filter the list

请注意,即使所有 Thing 实例都已死亡,此代码末尾的循环也会永远运行且没有输出。您可能需要对其进行修改,以便了解发生了什么,甚至更改 while 循环以检查 things 中是否还剩下任何对象。使用 while things 而不是 while True 可能是一个合理的方法!

关于python - 如何删除该类中某个类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com