函数'barn'将使用sqlite3进入数据库,并将返回一个包含给定名称子项名称的列表,它在我第一次调用该函数时工作正常但第二次调用时它给了我错误:
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
a.barn('David')
TypeError: 'list' object is not callable
我的代码:
class barn:
def __init__(self):
self.datapers=[]
self.pappor=[]
self.mammor=[]
c.execute("SELECT name FROM person")
for namn in c:
self.datapers.append(str(namn[0]))
c.execute("SELECT far FROM parent")
for pappa in c:
self.pappor.append(str(pappa[0]))
c.execute("SELECT mor FROM parent")
for mamma in c:
self.mammor.append(str(mamma[0]))
def barn(self,namn):
self.barn=[]
self.barnid=[]
if namn in self.pappor:
print "Pappa :"+namn
self.b=c.execute("SELECT id FROM parent WHERE far=?;",(namn,))
conn.commit()
for barnXID in self.b:
self.barnid.append(barnXID[0])
for barnID in self.barnid:
c.execute("SELECT name FROM person WHERE id=?;",(barnID,))
self.barn.append(str(c.fetchone()[0]))
conn.commit()
return
你能看出为什么会这样吗?
答案 0 :(得分:2)
在调用方法barn
之后,您将使用空列表替换它,该列表不是可调用对象。
def barn(self,namn):
self.barn=[]
考虑重命名属性:
self.barnlist = []
答案 1 :(得分:0)
您的barn
方法会将self.barn
设置为列表,从而覆盖自己。为列表使用不同的名称。