【发布时间】:2011-05-20 21:24:04
【问题描述】:
我在运行时更改类的值,然后将其实例化为一个对象,然后将该对象存储在另一个类中并将其放入 python 字典中时遇到了一些麻烦。
这是我写的一个小代码sn-p来说明问题:
import unittest
class cls1(object):
def __init__(self, obj):
self.obj = obj
class cls2(object):
def __init__(self):
self.var = 1
class Testdict(unittest.TestCase):
def __init__(self):
self.objs = dict()
def runTest(self):
obj2 = cls2()
obj1 = cls1(cls2())
self.objs["test1"] = obj1
self.assertEqual(self.objs["test1"].obj.var, 1)
cls2.var = 2
self.assertEqual(cls2.var, 2)
obj1 = cls1(cls2())
self.objs["test2"] = obj1
self.assertEqual(self.objs["test1"].obj.var, 1)
self.assertEqual(self.objs["test2"].obj.var, 2)
if __name__ == "__main__":
d = Testdict()
d.runTest()
为什么 cls2 不实例化它的 var 等于 2?
我希望这个问题有点道理。
【问题讨论】:
-
请提供以大写字母开头的班级名称。我们更容易阅读。
-
对不起,我通常写符合pep8的代码,我只是想匆忙写下来。
标签: python class object dictionary