2014-03-01 3 views
0

다양한 함수가 만들어졌으며 그 중 하나가 데이터를 추가해야하고 크기 함수는 항목이 추가 된 후에 업데이트해야합니다. 그러나 내가 그것을 할 때, 내가 지원하지 않는 피연산자 유형 (들)을 말하는 오류가 + : '방법'과 'int. 그게 무슨 뜻인지 혼란 스럽네요.두배로 링크 된 목록의 크기

def size(self): 
    self.length = 0 
    return self.length 

def append(self, data): 
    new_node = Double_Node(data) 
    self.size = self.size + 1 
+3

가하셨습니까을'self.length을 = self.length + 1'? – thefourtheye

답변

1
def size(self): 
    … 

이 부재하는 방법이다 size 클래스를 정의한다. 따라서 self.size + 1을 시도하면 1을 메서드에 추가하려고합니다. 오류가 무엇인지 정확하게 알려줍니다.

또한이 결과를 self.size에 할당하려고합니다.이 방법은 본질적으로 메서드를 덮어 쓰므로 원하는 결과가 아닙니다.

대신 self.length을 1 씩 증가시키고 싶을 것입니다.

사람들이 len() 함수를 객체의 길이를 얻는 표준 방법 인 객체와 함께 사용할 수있게하려면 __len__이라는 특별한 메소드를 구현하는 것이 좋습니다. 예 :

def __len__ (self): 
    return self.length 
0

예를 들어 size은 정수가 아닌 방법입니다. 당신은 아마 그것을 호출하는 것을 의미하지만 속성이 아닙니다 때문에, 당신이이 건물의 장식과 세터 사용해야합니다 : 다음

class MyObj(object): 
    def __init__(self): 
     self.length = 0 
    @property 
    def size(self): 
     return self.length 

    @size.setter 
    def size(self, value): 
     self.length = value 

    def append(self, data): 
     self.size = self.size + 1 

그리고 :

>>> myobj = MyObj() 
>>> myobj.length 
0 
>>> myobj.size 
0 
>>> myobj.append('foo') 
>>> myobj.size 
1