예기치 않은 문제가 발생했을 때 파이썬에서 어떤 작업을하고있었습니다. 나는 클래스와 두 개의 변수 x와 y를 가지고있다. x와 y는 각각 자신의 데이터가있는 클래스의 별도 사본이됩니다. 그래서 x를 클래스와 같게 설정하고 몇 가지 값을주고 y를 사용하여 동일하게합니다. 일단 그 데이터를 사용하려고하면 x에 대한 값을 덮어 썼다는 것을 알게됩니다. 두 클래스의 별도 복사본을 만들지는 않았지만 대신 같은 클래스에 대한 두 개의 참조를 작성한 것으로 보입니다. 그래서 여기 코드의 일반적인 예는 다음과 같습니다왜 두 개의 클래스 인스턴스가 동일한 데이터를 공유하는 것으로 보입니까?
x = someClass()
x.set(2, 0)
y = someClass()
y.set(3, 0)
print(x)
최종 결과는 3 대신 나는 각 변수에 대해 서로 다른 데이터를 보유 할 클래스의 별도의 "버전"을 만들려면 2의 인쇄되어 있다는 점이다. 그러나 어떻게에 관해서는. 파이썬 사용하기 3.3. 다음은 클래스 코드입니다.
class someClass:
def __init__(self, list = [0,0,0,0,0,0,0,0,0,0]):
self.list = list
def __repr__(self):
return str(self.list)
def set(self, loc, val):
if ((loc >= 0) & (loc <= 9)):
self.list[loc] = val
문제가 클래스 정의에있는 것 같습니다. 게시 할 수 있습니까? –
클래스와 개체를 혼동스럽게합니다. 'someClass()'를 호출하면 그 클래스의 인스턴스를 생성하게됩니다. 그 인스턴스는 그 자체로는 클래스가 아닙니다. '다른 데이터를 담을 수있는 별도의 "버전"을 만들고 싶습니다.'라는 용어는 독립적 인 클래스 인스턴스를 만들고 싶다는 의미였습니다. 당신은 가지고 있습니다. 하지만 어떻게 든 데이터를 서로 연결했습니다. 그 외에도 일부 예제 코드를 보지 않고는 도움을 받기가 어렵습니다. – Iguananaut
'someClass','__init__'과'set' 메쏘드의 정의가 없다면이 질문은 대답 할 수 없습니다. – msw