2012-04-20 90 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