我想将一个对象插入一个列表中,我给出了一个错误说:
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)
答案 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