저는 독학 프로그래머입니다. 저는 최근에 파이썬을 배웠습니다. 이상한 문제가 발생했지만 파이썬 구문 및/또는 프로그램 흐름을 알지 못하는 결과라고 생각합니다.Python 클래스 인스턴스 변수 분리
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
}
]
내가 절차 적 코드가 포함 된 파일이 클래스의 기능을 테스트하고, 상황이 이상한 얻을 곳
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
문 test.py
이다.
[{'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'}}]
입니다 : 출력 는가되어야 하는가?
편집 : 파이썬 3.5
출력이 어떻게 바뀌는 지 묻고 싶습니다. 이전에 사용한 or 키워드를 본 적이 없습니까? –
이것은 실제로 나를 위해 몇 가지를 지 웁니다. 첫째, " 'NoneType'객체가 항목 할당을 지원하지 않습니다"라는 문제가 발생했습니다 ('tags : dict = None' 설정). 둘째로, 나는 내 질문에 설명 된 문제를 만났습니다. 이것으로 양쪽 모두가 지워지고'또는'가 많은 의미를 갖습니다! 고맙습니다! 이것을 약 8 분 안에 대답으로 받아 들일 것입니다. – nwilging
셋째, "사물이 비공식이어야 함을 포함하면 모든 곳에 두 배의 밑줄을 넣을 것입니다!" – jonrsharpe