将值插入list-Python时出错

时间:2014-04-09 21:00:23

标签: python list constructor insert

我想将一个对象插入一个列表中,我给出了一个错误说:

    Archive.insertdoc(d)
TypeError: insertdoc() missing 1 required positional argument: 'd'

这是我的主要模块:

doc = Document(name, author, file)
Archive.insertdoc(doc)

Archive模块:

def __init__(self):
    self.listdoc = []

def insertdoc(self, d):
    self.listdoc.append(d)

2 个答案:

答案 0 :(得分:2)

您需要创建Archive类的实例;您正在访问未绑定的方法。

这应该有效:

archive = Archive()

doc = Document(name, author, file)
archive.insertdoc(doc)

这假设你有:

class Archive():
    def __init__(self):
        self.listdoc = []

    def insertdoc(self, d):
        self.listdoc.append(d)

如果您将两个函数放在模块级别,则不能在函数中使用self引用并将其绑定到模块;函数没有绑定到模块。

如果您的存档应该是应用程序的全局存档,请改为在模块中创建Archive类的单个实例,并仅使用该实例。

答案 1 :(得分:2)

看起来Archive.insertdoc是类Archive的实例方法。意思是,必须在Archive

的实例上调用它
doc = Document(name, author, file)
archive = Archive()     # Make an instance of class Archive
archive.insertdoc(doc)  # Invoke the insertdoc method of that instance