为什么内置del不会调用列出的内部类__del __()?

时间:2018-02-15 19:59:42

标签: python list

假设我们有一个班级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

0 个答案:

没有答案