여러 데이터베이스를 열고 내용을 비교하는 Python 스크립트를 만들려고합니다. 해당 스크립트를 만드는 과정에서 콘텐츠가 내가 만든 개체 인 목록을 만드는 데 문제가 발생했습니다.
이 게시물을 위해 프로그램을 단순하게 단순화했습니다. 먼저 새 클래스를 만들고 새 인스턴스를 만들고 속성을 할당 한 다음 목록에 씁니다. 그런 다음 인스턴스에 새 값을 할당하고 다시 목록에 씁니다 ...
문제는 항상 동일한 객체이므로 실제로 기본 객체를 변경하는 것입니다. 목록을 읽으면 동일한 개체가 반복해서 반복됩니다.
그렇다면 루프 내의 목록에 객체를 어떻게 작성합니까?
다음은 내 단순화 된 코드입니다.
class SimpleClass(object):
pass
x = SimpleClass
# Then create an empty list
simpleList = []
#Then loop through from 0 to 3 adding an attribute to the instance 'x' of SimpleClass
for count in range(0,4):
# each iteration creates a slightly different attribute value, and then prints it to
# prove that step is working
# but the problem is, I'm always updating a reference to 'x' and what I want to add to
# simplelist is a new instance of x that contains the updated attribute
x.attr1= '*Bob* '* count
print "Loop Count: %s Attribute Value %s" % (count, x.attr1)
simpleList.append(x)
print '-'*20
# And here I print out each instance of the object stored in the list 'simpleList'
# and the problem surfaces. Every element of 'simpleList' contains the same attribute value
y = SimpleClass
print "Reading the attributes from the objects in the list"
for count in range(0,4):
y = simpleList[count]
print y.attr1
그렇다면 각 항목이 모두 동일한 항목을 가리키는 대신 객체의 다른 인스턴스를 포함하도록 simpleList의 요소를 어떻게 (추가, 확장, 복사 등) 할 수 있습니까?