:는 다루기 힘든 범위 내가 여기서 무슨 일이 일어나고 있는지 이해 할 수없는 것 행동
class testclass:
def __init__(self):
print "new instance"
myList=[]
if __name__ == "__main__":
inst1=testclass()
inst1.myList.append("wrong")
inst2=testclass()
inst2.myList.append("behaviour")
print "I get the",inst2.myList
출력은 다음과 같습니다
new instance
new instance
I get the ['wrong', 'behaviour']
나는 INST1의 목록이 아무것도 모르는 것으로 예상 것 inst2의 목록에 대해서는 어떻게 든 보입니다. myList의 범위는 클래스의 인스턴스화를 trascends합니다. 나는 이것이 매우 불안정하고 혼란 스럽거나 여기에 뭔가 빠졌는가?
감사합니다.
개체에 대한 할당 전에 만 공유됩니다. – Marcin
귀하의 의견을 이해할 수 있는지 확실하지 않습니다. 클래스 변수가 항상 모든 인스턴스에서 공유되지 않습니까? 클래스 변수와 인스턴스 변수로 정의 된 myList가있는 경우에도 여전히 별개의 것이므로 하나에 대한 할당은 다른 변수에 영향을 미치지 않습니다. 내가 놓친 게 있니? – Pierce
그건 내 요점이다. 인스턴스의 변수에 할당 한 경우 더 이상 해당 인스턴스를 사용하여 클래스 변수에 액세스 할 수 없습니다 (인스턴스 변수를 삭제하지 않는 한). – Marcin