2013-08-09 4 views
2

저는 헬기에 호스트하려고하는 파이썬으로 작성된 스크래퍼 세트를 가지고 있습니다. 나는 repro를 heroku로 밀어 넣었습니다. 그리고 그것은 실행되기 시작할 것이지만, 내 로컬 환경에서 결코 만나지 못한 오류로 종료합니다.Heoku에서 Python 스크립트 실행

둘 다 이름과 지구 문자열, 나는 TypeError: __init__() takes at least 3 arguments (2 given)

두 의원과 사람이 뭔가에있을 수 requirements.txt 에 지정된 둘 다 내 스크립트에 의존하는 패키지에 포함되어 얻을 수있다 p = Legislator(name=name, district=district)를 호출 할 때 virtualenv로할까요?

def __init__(self, name, post_id, party=None, chamber=None, **kwargs): 
     super(Legislator, self).__init__(name, **kwargs) 
     self.post_id = post_id 
     self.party = party 
     self.chamber = chamber 
     self._contact_details = [] 

def __init__(self, name, **kwargs): 
     super(Person, self).__init__() 
     self.name = name 
     self.biography = None 
     self.summary = None 
     self.birth_date = None 
     self.death_date = None 
     self.image = None 
     self.gender = None 
     self.links = [] 
     self.other_names = [] 
     self.extras = {} 
     self._related = [] 
     self.contact_details = [] 

     for k, v in kwargs.items(): 
      setattr(self, k, v) 
+1

필자는 파이썬 3의 상속에 익숙하지 않으므로이 질문이 무식하지만, 왜 Person의 생성자 안에'super (Person, self) .__ init __()'을 호출 할까? 사람이 사람을 상속 받도록하려는 것 같습니다. 그리고 그럴만 한 이유가 있다면'super (Person, self) .__ init __ (name)'이되어서는 안됩니까? – Brionius

+1

솔직히 말해서 조금 혼란 스럽습니다. 그 부분은 제 코드가 아니며, 제가 사용하고있는 패키지에서 가져온 것입니다. 사람은 https://github.com/opencivicdata/larvae/blob/master/larvae/person.py에서 제공되며 의원은 https://github.com/opencivicdata/pupa/blob/master/pupa/scrape/helpers에서 제공됩니다. py – agarrow

+2

Waitaminute - 입법자가'self, name, post_id, party = None, chamber = none, ** kwargs' 인수를 취하고'입법자 인스턴스>, name = name, district = district'를 주면, 'post_id' 인수가 주어지지 않았습니까? 그게 3 인자가 빠진 것이 아닌가? 나는 당신이 당신의 지역 환경에서이 오류를 어떻게 피할 수 있었는지 잘 모르겠습니다 ... – Brionius

답변

2

의원이 인수 소요 사람의 생성자 :

self, name, post_id, party=None, chamber=None**kwargs 여기

는 의원에 대한 생성자

당신은 그것을

<Legislator instance>

, name=namedistrict=district을 준,

는 당신은 그것을 post_id 인수를 부여하지 않은 - 그 3없는 인수입니다.

관련 문제