Python:不能在类中使用函数两次,TypeError:'list'对象不可调用,为什么? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:不能在类中使用函数两次,TypeError:'list'对象不可调用,为什么? [关闭]相关的知识,希望对你有一定的参考价值。
函数'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
你能明白为什么会这样吗?
答案
在调用方法barn
之后,您将使用空列表替换它,该列表不是可调用对象。
def barn(self,namn):
self.barn=[]
考虑重命名属性:
self.barnlist = []
另一答案
你的barn
方法通过将self.barn
设置为列表来覆盖自己。为列表使用不同的名称。
以上是关于Python:不能在类中使用函数两次,TypeError:'list'对象不可调用,为什么? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章