2012-04-20 2 views
1

Так вот мой код:Python объектно-ориентированное программирование иницилизации Аргумент ошибка

class Board: 
    def __init__ (self, boardLength, boardHeight, pieces): 
     self.__boardLength = boardLength 
     self.__boardHeight = boardHeight 
     self.__pieces = pieces 
     self.__snapShots = [] 
     self.__tiles = [] 
     while len(self.__tiles) < (self.__boardHeight*self.__boardLength): 
      self.__tiles.append(0) 

board1 = Board(5, 4, 
    [u,I_shape(1,'I'),X_shape(3,5,'U'),T_shape(4,5,'U'),L_shape(3,5,'U')] 
) 

и я получаю это:

TypeError: __init__() takes exactly 4 arguments (3 given) 

Я понимаю, что INIT взять 4 заданы параметры, но один из них сами и я дал другие три. Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

Что такое '__init__' для I_shape? Это вызов, который дает три аргумента (неявный 'self' плюс два, которые вы даете). – torek

+0

Я должен был исправить форматирование кода на этом, как 3 раза. Его так трудно читать. – jdi

+0

То, что вам не хватает, это остальная часть контекста, связанная с TypeError. Это должно сказать вам, где именно происходит авария, и как @Lattyware предлагает в ответ, скорее всего, это класс I_shape, а не этот класс Board. – jdi

ответ

6

Я предполагаю, что ваша проблема на самом деле в I_shape, учитывая, что ваши другие фигуры принимают все три аргумента. Я запускал это, и он работал нормально, заменив классы, которых нет с None.

Кроме того, стоит отметить, что использование имени mangling (__variable) не требуется 99,9% времени. Используйте одно подчеркивание, если вы хотите указать, что оно личное.

+0

Вы были правы! Благодаря! – cheesery

+0

Если это ответит на ваш вопрос, не стесняйтесь [принять мой ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –

+0

@ Lattyware: Вы были быстры. Когда я только просматривал, у вас уже был ответ. –

Смежные вопросы