2011-04-08 87 views
2

親愛的所有人,試圖學習python,類,以及如何傳遞變量。在這裏閱讀學習指南,並且遇到以下錯誤:python變量,類

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 – 2011-04-08 21:50:47

+0

謝謝你們!將'instantiate'這個詞解釋爲'define'是否合適? 換句話說...... 您必須先定義該類中的類和函數,然後才能使用它們... – Cmag 2011-04-08 22:09:50

+0

@Clustermagnet否。因爲一個類不需要'實例化'來運行它的方法,如果它們是靜態或類方法。 Instaniated將被最好地描述爲在內存中創建對象。靜態方法和類方法作爲類的一部分存在,但不需要設置類來使用它們。 – 2011-04-08 22:57:11

1

除了吉姆說的之外,self會自動傳給你。 (並不需要稱爲self,但稱之爲別的東西只會讓自己和其他人感到困惑)