2013-10-17 5 views
0

저는 아주 기본적인 질문이 있습니다. 나는 클래스에서 선언 된 루프에서 배열을 채울 필요가있다.클래스 배열에 값 추가

class Arr: 
    def __init__(self): 
     self.test = [] 

var = Arr 
for x in xrange(0, 3): 
    var.test.append(1) 

이 코드는 항상 "클래스 ARR은 '시험'에는 속성이 없습니다",하지만 난 이유가 표시되지 않습니다 반환 : 단순화 된 코드는 무엇인가 같다. 뭐가 잘못 되었 니?

답변

5

var = Arr()을 사용하여 인스턴스의을 만들어야합니다.

var = Arr을 수행하는 경우 var은 해당 클래스의 인스턴스가 아닌 Arr 자체에 대한 참조입니다.

0

를 사용하여 인스턴스

1

당신은 Arr 인스턴스를 생성해야합니다 당신은 클래스 내부의 목록에 값을 할당, ARR 클래스의 인스턴스를 생성해야합니다

class Arr: 
    def __init__(self): 
     self.test = [] 

var = Arr() 
for x in xrange(0, 3): 
    var.test.append(1) 

로 변경하십시오 언급 된 다른 것과 마찬가지로 클래스 자체를 조작하는 대신.

그러나 내부 인스턴스 구성원을 외부에서 조작하지 않는 것이 좋습니다. 당신은 초기화하는 방법이 있어야합니다 test 배열 :

class Arr: 
    def __init__(self): 
     self.test = [] 

    def initialize(self, cnt): 
     for i in range(cnt): 
      self.test.append(1) 

플러스 당신은 또한 새로운 스타일의 파이썬 클래스 사용을 고려할 수 있습니다 당신이보고있는

class Arr(object): 
    ... 
0

을 "클래스 ARR 더 속성 '테스트'가 없다 "왜냐하면 그 수업은 그렇지 않았기 때문이야. 그러나 인스턴스에는 속성이 있습니다. 클래스의 속성으로 만들기 위해서는 ... 클래스의 속성으로 만들어야합니다.

class Arr(object): 
    test = [] 

var = Arr 
for x in xrange(0, 3): 
    var.test.append(1) 

print Arr.test