2011-04-08 7 views
2

친애하는 모두, 파이썬, 클래스 및 변수를 전달하는 방법을 배우려고합니다. 여기에 학습 가이드를 통해가는, 다음과 같은 오류에 문제가 있어요 :파이썬 변수, 클래스

TypeError: unbound method scan() must be called with lexicon instance as first argument (got str instance instead) 

누군가 날이 더 잘 이해하는 데 도움시겠습니까? 감사합니다.

class lexicon (object): 
    def __init__(self,data): 
    self.direction = data 
    self.words = data.split() 

    def scan(self): 
    return self.words 

def main(): 
    stuff = raw_input('> ') 
    x = lexicon.scan(stuff) 

if __name__ == '__main__': 
main() 

답변

7

당신은 당신이 그 방법 중 하나를 호출 할 수 있습니다 전에 유형 lexicon의 객체를 인스턴스화해야합니다. 즉

lex = lexicon(data) 
lex.scan() 
+0

바운드 또는 언 바운드 방법을 이해하는 데 좋은 읽을 거리입니다. http://docs.python.org/reference/datamodel.html 및 http://docs.python.org/library/stdtypes.html#methods –

+0

감사합니다. '인스턴스화'라는 단어를 '정의'로 설명하는 것이 적절합니까? 다른 말로하면 ... 클래스를 사용하기 전에 해당 클래스 내에서 클래스와 함수를 정의해야합니다. – Cmag

+0

@Clustermagnet 아니요. 클래스를 실행하기 위해 '설치'할 필요가 없으므로 정적 또는 클래스 메서드. Instaniated는 메모리에 객체를 만드는 것으로 가장 잘 묘사됩니다. 정적 메소드 및 클래스 메소드는 클래스의 일부로 존재하지만 클래스는이를 사용하기 위해 설치 될 필요가 없습니다. –

1

짐 외에도 self이 자동으로 전달됩니다. (그리고 self라고 부를 필요는 없지만 다른 것을 부르는 것은 자신과 다른 사람들을 혼란스럽게 할 것입니다.)