谁能解释这种Python行为?

时间:2019-01-07 23:26:41

标签: python

我对理解此代码有疑问。

我叫过dd 3次,但是为什么它每次都没有删除函数的前一个堆栈呢?

我得到以下输出:

11
12
13

您能解释一个解决方案吗?另外,这个问题还会在哪里发生?

class Hello():
    v=10

class K():
    a=Hello()
    def p(self):
        self.a.v=self.a.v+1
        print(self.a.v)
        self.a=None
def dd(): 
    ff=K()
    ff.p()
    del(ff)
dd()
dd()
dd()

1 个答案:

答案 0 :(得分:0)

删除ff时,将删除从K继承属性的新对象(从Hello()继承属性)。

将属性继承给对象时,它们会一起更改,但不会一起删除。您将需要重新初始化属性,以使它们恢复原样。