如何清除父创建的内部类属性

时间:2018-05-02 13:50:34

标签: python inner-classes

我有一个嵌套的类设置,如下面的代码片段。

class test:
    class child:
         some_variable = None

当我尝试从另一个.py文件中调用此代码时,如bellow

from testing import test
t = test()
t.child.some_variable ="123"
t = test()
print(t.child.some_variable)

我得到了输出

123

我希望得到无,或者至少是错误消息。我试图用以下方法解决它,但问题仍然存在相同的输出。

class test:
    def __init__(self):
        self.child()
    class child:
        some_variable = None
        def __init__(self):
            self.some_variable = ""

当我调用父类时,如何启动新的子类?

1 个答案:

答案 0 :(得分:0)

不要将它作为一个内部类,而是作为一个单独的类,然后是一个即时属性:

class child_class:
    def __init__(self):
        self.some_variable = None

class test:

    def __init__(self):
        self.child = child_class()


t = test()
t.child.some_variable = "123"
t = test()
print(t.child.some_variable) # prints None

或者替代方案,您可以拥有内部类,但仍然需要创建实例属性:

class test:
    class child_class:
        def __init__(self):
            self.some_variable = None

    def __init__(self):
        self.child = self.child_class()

t = test()
t.child.some_variable = "123"
t = test()
print(t.child.some_variable) # also prints None