2012-04-20 91 views
1

是我的代碼:Python的OOP初始化參數錯誤

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) 

據我所知,初始化坐4個arguements,但其中一人是自我,我把它另外三個。任何人都可以告訴我我做錯了什麼?

+0

I_shape的'__init__'是什麼?這是一個給出三個參數的調用(隱含的「自我」加上你給出的兩個參數)。 – torek 2012-04-20 17:30:20

+0

我不得不嘗試修復這個代碼格式,就像3次。它很難閱讀。 – jdi 2012-04-20 17:31:56

+0

您可能會忽略的是圍繞TypeError的上下文的其餘部分。這應該告訴你發生崩潰的確切位置,並且@Lattyware在答案中表明瞭它最可能出現在I_shape類中而不是這個Board類。 – jdi 2012-04-20 17:33:04

回答

6

我想你的問題實際上是在I_shape,因爲你的其他形狀都需要3個參數。我跑這個,它運行良好,取代None不存在的類。

另外,值得注意的是,使用名稱修改(__variable)不需要99.9%的時間。如果您想表明它是私密的,請使用單個下劃線。

+0

你說得對!謝謝! – cheesery 2012-04-20 17:33:26

+0

如果回答您的問題,請隨時[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – 2012-04-20 17:34:09

+0

@Lattyware:你很快。當我剛剛瀏覽時,你已經有了答案。 – 2012-04-20 17:36:20