当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中创建类的不同实例?

如何解决《如何在Python中创建类的不同实例?》经验,为你挑选了1个好方法。

有人可以向我解释下面的代码.

class InnerTest:

    def __init__(self, value = 0):
        self.value = value

class OuterTest:

    def __init__(self, inner_test = InnerTest()):
        self.inner_test = inner_test

a = OuterTest()
b = OuterTest()

a.inner_test.value = 42
print b.inner_test.value

它打印42,我预计0.

我打算创建两个OuterTest实例,每个实例都包含一个不同的InnerTest实例.相反,我得到了两个引用同一个InnerTest实例的OuterTest实例.

还有什么是正确的方法来实现我想要的东西?



1> Rohit Jain..:

函数中的默认参数仅在函数定义时计算一次.因此,只有一个实例InnerTest用于该对象.

这意味着,当您创建两个对象时:

a = OuterTest()
b = OuterTest()

两者,a.inner_test并且b.inner_test,都指的是同一个实例,因此结果.

要解决此问题,请将默认值更改为None,并有条件地创建实例:

class OuterTest:
    def __init__(self, inner_test=None):
        if not inner_test:
            inner_test = InnerTest()
        self.inner_test = inner_test

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有