2013-08-11 1 views
0

나는이 이상한 행동을 파이썬에서 생각해 냈습니다. I 클래스 Numbers 두 가지 차이 인스턴스를 만들고 싶어 :파이썬 3에서 클래스의 새로운 인스턴스를 만드는 방법은 무엇입니까?

class Numbers: 
    numberList=[] 

    def __init__(self, *arg): 
     for number in arg: 
     self.numberList.append(number) 


numbers=Numbers(4, 8) # Instance 1 
numbers=Numbers(7, 5, 3) # Instance 2 
print(numbers.numberList) 

출력 :

[7, 5, 3] 

내가 클래스 인스턴스을 내 코드의 부분을 생각했다

예상 출력

[4, 8, 7, 5, 3] 

다른 언어로 된 New 키워드의 사용률과 동일합니다. 그러나 결과는 완전히 다릅니다. 왜 그런가요? instance 1으로 바꿔instance 2으로 바 꾸었습니다. 두 개를 연결하지 마십시오.

답변

2

다음 코드에서 numberList은 모든 클래스 인스턴스에서 공유하는 클래스 변수입니다. 인스턴스 당 인스턴스 변수를 얻기 위해 다음과 같이

>>> class Numbers: 
...  numberList = [] 
... 
>>> n1 = Numbers() 
>>> n2 = Numbers() 
>>> Numbers.numberList is n1.numberList 
True 
>>> Numbers.numberList is n2.numberList 
True 

변경 (라고 데이터를 파이썬에서 속성) :

class Numbers: 
    def __init__(self, *arg): 
     self.numberList = [] 
     for number in arg: 
      self.numberList.append(number) 
+1

또는 단지'self.numberList = 목록 (인수)' –

관련 문제