2017-12-17 13 views
0

'barn'함수는 sqlite3을 사용하여 데이터베이스로 이동하고 주어진 이름의 자식 이름으로 목록을 되돌릴 것이며 함수를 처음 호출 할 때 완벽하게 작동하지만 두 번째 호출 할 때 완벽하게 작동합니다 나에게 오류를 제공합니다Python : 클래스의 Cant use 함수를 두 번 사용했습니다. TypeError : 'list'객체를 호출 할 수 없습니다. 이유가 무엇입니까?

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 

당신이 볼 수 있을까요?

+1

당신이 질문에 파이썬 코드를 삽입하지 링크를 통해 할 수

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

는 속성 이름을 변경 고려? 그리고 여러분은 여러분의 질문을 인용문에 넣었습니다. 이것은 또한 잘못된 것입니다. 내 생각에 downvote는 – hansaplast

+1

이므로 screenshot을 사용하지 마십시오. 코드 – hansaplast

+0

을 사용하여 sqlite 데이터베이스를 사용하여 –

답변

0

barn 메서드는 self.barn을 목록으로 설정하여 덮어 씁니다. 목록에 다른 이름을 사용하십시오.

+0

감사합니다 : D 좋은 주말 보내세요. –

2

barn 메서드를 호출 한 직후 호출 가능 개체가 아닌 빈 목록으로 바뀝니다.

self.barnlist = []