2012-04-20 8 views
1

は、だからここに私のコードです:PythonのOOPのinit引数エラー

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 arguementsを取ることを理解し、それらの一つが自己であり、私はそれを与えました他の3人。誰かが間違って何をしているのか教えていただけますか

+0

I_shapeの '__init__'とは何ですか?それは3つの引数(暗黙の 'self'と与えた2つの引数)を与える呼び出しです。 – torek

+0

私は3回このようにコードの書式を修正しようとしなければなりませんでした。その読みにくいです。 – jdi

+0

欠けているかもしれないことは、TypeErrorを取り巻く残りのコンテキストです。それはクラッシュがどこで発生しているかを正確に伝えるはずで、@Lattywareが回答で示唆するように、I_shapeクラスであり、このボードクラスではない可能性が最も高いです。 – jdi

答えて

6

あなたの問題は実際にはI_shapeにあると想像してください。あなたの他の図形はすべて3つの引数を取るとします。私はこれを実行し、それは正常に動作し、存在しないクラスをNoneに置き換えました。

また、名前マングリング(__variable)を使用することは、99.9%の時間を必要としないことに注意してください。プライベートであることを示す場合は、単一のアンダースコアを使用します。

+0

あなたは正しいです!ありがとう! – cheesery

+0

それがあなたの質問に答えるなら、[私の回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)まで気軽に。 –

+0

@Lattyware:あなたは速かったです。私がブラウズしていたとき、あなたはすでに答えを持っていました。 –