2016-11-09 180 views
-1

我一直坐在這裏跑過來一些代碼,我要創建學校(這是一個搜索系統)和我一直在試圖解決這個錯誤的年齡。任何幫助是極大的讚賞。TypeError缺少參數?

代碼:(我知道壓痕是錯的只是爲網站格式化)

class Main: 
    list = [] 
    def __init__(self, item, term): 
     self.item = item 
     self.term = term 
    def add(self, item): 
     Main.list.append(self.item) 
     print(Main.list) 
    def search(self, term): 
     print(self.term) 
     if self.term in Main.list: 
      print("item exists") 
     else: 
      print("no such thing") 

def running(): 
    command = input("command?") 
    if command == "/add": 
     item = Main(input("item to add?  ")) 
     item.add(item) 
     running() 
    if command == "/search": 
     searchTerm = Main(input("item to search for")) 
     searchTerm.search(searchTerm) 
     print(Main.list) 

    running() 

錯誤:

Traceback (most recent call last): 
    File "/x/x/x/x.py", line 27, in <module> 
    running() 
    File "/x/x/x/x.py", line 19, in running 
    item = Main(input("item to add?  ")) 
TypeError: __init__() missing 1 required positional argument: 'term' 
+1

你不能傳遞一個'term'說法,當你調用'main()的' 。 –

+0

你有:'__init __(self,item,term):'。你正在使用'Main(input(「item to add?」))''初始化item,即1個字符串。如最後一行所示,您缺少'term'參數。 – fredtantini

回答

0

Main類的構造函數(即__init__法)需要兩個參數。這意味着你不能只做Main(input("item to add? ")),它傳遞一個參數(input()方法的結果返回一個字符串)。

您需要Main(input("item to add? "), something_else),即兩個參數。

+0

所以我可以從字面上用「」填充這個空格,或者這被認爲是不好的語法? – Tom

+0

你可以。如果你不需要它,最好將它從它中刪除,因爲它根本不存在。 – yper

+0

那麼我需要在這裏刪除什麼?只是從__init__方法中刪除術語? – Tom

0

如果你想這個術語只有當你需要它,你可以通過這個來初始化填寫:

def __init__(self, item, term=''):