私は独学のプログラマーです。私は最近、Pythonを学んでいます。私は奇妙な問題に遭遇しましたが、それは私がPythonの構文やプログラムの流れを知らない結果であると想像しています。Pythonクラスのインスタンス変数の分離
私はファイルTestClass.py
にあるTest
という1つのクラスを持っています。 `
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
}
]
私は物事が奇妙な取得する場所print
文がある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())
、手続き型のコードを含むファイルで、このクラスの機能をテストしています。
[{'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
3つは、「物事はプライベートでなければならないので、私はどこにでも二重のアンダースコアを置くでしょう! – jonrsharpe