2017-12-06 17 views
1

ボードを作成しようとしました。これは、引数が1つのみの場合は正方形でなければなりません(2つがある場合は四角形)。必要な引数をオプションに渡します。

コードサンプル:私は何を期待

class Game: 
    def __init__(self,h,w=h): # lookie-lookie 
     self.board = [[0 for i in range(w)] for j in range(h)] 

b = Game(2) 
b.board 
#should return [[0,0],[0,0]] 
b = Game(2,1) 
b.board 
#should return [[0],[0]] 

私が得たもの:

NameError: name 'h' is not defined 

私はそれを修正する必要がありますどのように?

答えて

2

関数定義では、オプションの引数に渡される値が評価されますが、その瞬間にはhは定義されていません。代わりに、オプションの引数のプレースホルダとしてセンチネル値を使用することができます。

class Game(object): 
    def __init__(self,h,w=None): 
     if w is None: 
      w = h 

あなたは、Python 2にしている場合は、objectをサブクラス化することを忘れないでください。

+0

既にしました。 ちょうど私が知らなかったPythonのいくつかの機能を探しています。とにかくありがとうございます。 –

関連する問題