TypeError缺少参数?

时间:2016-11-09 19:32:52

标签: python python-2.7 python-3.x

我一直坐在这里跑过我必须为学校创建的一些代码(它是一个搜索系统),而且我一直在努力修复这个错误。非常感谢任何帮助。

代码:(我知道缩进是错误的,仅适用于网站格式化)

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'

2 个答案:

答案 0 :(得分:0)

Main类的构造函数(即__init__方法)需要两个参数。这意味着你不能只做Main(input("item to add? ")),它传递一个参数(input()方法的结果,它返回一个字符串)。

您需要Main(input("item to add? "), something_else),即两个参数。

答案 1 :(得分:0)

如果您希望仅在需要时填写该字词,您可以将其传递给 init

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