2013-10-14 4 views
0

파이썬을 사용하여 클래스를 정의한 다음이 클래스의 인스턴스를 목록에 추가합니다. add_town이 실행될 때생성자가있는 Python 추가 클래스

class town: 
    def __init__(name_, x_, y_, mayor_): 
     name = name_ 
     main_x = x_ 
     main_y = y_ 
     mayor = mayor_ 
     desc = desc_ 

def add_town(name_, x_, y_, mayor_): 
    towns.append(town(name_, x_, y_, mayor_)) 
    town_number += 1 

def onCommand(): 
    add_town(args[1], loc_x, loc_y, sender.getName()) 

onCommand() 

불행하게도,이 오류가 발생합니다 :

Caused by: Traceback (most recent call last): File "", line 95, in onCommandTown File "", line 74, in add_town TypeError: init() takes exactly 4 arguments (5 given)

참고 :이 나는 간단하게하기 위해 사용하고 코드의 단락 된 버전입니다. 모든 변수가 올바르게 정의되었는지 확인하십시오.

편집 : 마을도 목록입니다.

왜이 오류가 발생했는지 아는 사람이 있습니까? 나는 당신의 __init__에서

def __init__(name_, x_, y_, mayor_): 

또한

def __init__(self, name_, x_, y_, mayor_): 

에, 당신은 초기화 매개 변수를해야 할 수도 있습니다

+3

this here에 읽기 '__init__' –

+0

http://docs.python.org/2/tutorial/classes.html –

답변

3

변화 ... 반 시간과 일어나는의 속삭임을 위해 그 위에 수수께끼했습니다 클래스 변수.

def __init__(self, name_, x_, y_, mayor_): 

    self.name = name_ 
    self.main_x = x_ 
    self.main_y = y_ 
    self.mayor = mayor_ 
    self.desc = desc_ 

등으로, 클래스 메서드 내에서 self.name 등으로 액세스합니다.

더 당신의`self` 인수를 누락

+0

감사를 매우 모든 것을 완벽하게 일했다 . "self"네임 스페이스를 정의 할 수있는 방법이 있나요? 그래서 self.x를 계속 입력 할 필요가 없습니까? –

+0

아니요, 필수 항목입니다. – karthikr