我是一个自学成才的程序员,我最近一直在学习python。我遇到了一个奇怪的问题,但我想这只是我不知道Python语法和/或程序流程的结果。Python类实例变量隔离
我有一个叫做Test
的类,它位于文件TestClass.py
中。 `
class Test:
__tags = {}
__fields = {}
def __init__(self, tags: dict={}, fields: dict={}):
self.__tags = tags
self.__fields = fields
def setTag(self, key, value):
self.__tags[key] = value
def getTag(self, key):
return self.__tags[key]
def setField(self, key, value):
self.__fields[key] = value
def getField(self, key):
return self.__fields[key]
def getAll(self):
return [
{
'tags': self.__tags,
'fields': self.__fields
}
]
我测试了这个类的功能在一个文件中包含的程序代码,test.py
import TestClass
t1 = TestClass.Test()
t1.setTag('test1', 'value1')
t1.setField('testfield', 'fieldvalue')
t2 = TestClass.Test()
t2.setTag('test2', 'value2')
print(t1.getAll())
print(t2.getAll())
的print
陈述事情变得怪异。输出应该是:
[{'tags': {'test1': 'value1'}, 'fields': {'testfield': 'fieldvalue'}}]
[{'tags': {'test2': 'value2'}, 'fields': {}}]
但实际产量为...
[{'tags': {'test2': 'value2', 'test1': 'value1'}, 'fields': {'testfield': 'fieldvalue'}}]
[{'tags': {'test2': 'value2', 'test1': 'value1'}, 'fields': {'testfield': 'fieldvalue'}}]
但为什么呢?
编辑:的Python 3.5
你介意我问这是怎么改变输出的,我以前没见过这个或者是关键字的用法? –
这实际上为我清除了一些东西。首先,我遇到了“'NoneType'对象不支持项目分配的问题”(设置'tags:dict = None')。其次,我遇到了我的问题中所描述的问题。这清除了两者,'或'很有意义!谢谢!在8分钟内将接受这个答案。 – nwilging
三,如果你包括“东西必须是私人的,我会把双下划线到处”! – jonrsharpe