Python:不能在类中使用函数两次,TypeError:“list”对象不可调用,为什么?

2024-09-30 10:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

函数“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 

你能明白为什么会这样吗?你知道吗


Tags: infromself名称forexecutedefselect
2条回答

您的barn方法通过将self.barn设置为列表来覆盖自身。请为列表使用其他名称。你知道吗

在调用方法barn之后,您将用一个空列表替换它,这个列表不是可调用的对象。你知道吗

def barn(self,namn): 
    self.barn=[]

考虑重命名属性:

    self.barnlist = []

相关问题 更多 >

    热门问题