2016-11-09 187 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=''):