假设我们有一个班级Foo
class Foo:
def __del__(self):
# do some kind of deleting
def run(self):
# run something
foo已被添加到列表中。它的方法将在后面的程序中使用。
l = [Foo()]
Foo现在在列表中
如果我想使用方法run
,我只需调用l
及其索引和方法
l[0].run()
现在,如果我想运行__del__
方法。我可以致电Foo
方法__del__
l[0].__del__()
<小时/> 我的问题是:
为什么del l[0]
l[0].__del__()
与list[0].__del__()
编辑:
在进一步搞砸之后,我发现del list[0]
和__del__
确实会产生相同的结果,但是调用del
不会删除列表中的项目,然而,class Foo:
def __del__(self):
print("Deleting")
list = [Foo()]
print(list)
list[0].__del__()
print(list)
del list[0]
print(list)
确实
>
[<Foo object at 0x7f4ad04d97f0>]
Deleting
[<Foo object at 0x7f4ad04d97f0>]
Deleting
[]
>
tapply