-4

リストのリストを作成する単純な Python クラス (これは三目並べボードになります) を作成したところ、構文エラーが発生します。

構文を他の多くのクラスと比較しましたが、それらはすべて機能し、すべてが同じ構文を持っています (私が見る限り)。

これは Python 3.2 です。エラーはコードの 2 番目のコロンで発生するため、コンストラクターの宣言の後 (または少なくとも赤で強調表示されている部分) に発生します。

class Board:
    def__init__(self, N):
        """Create a list of lists that will represent my playing board"""
        self._N = N
        Brd = []
        for i in range(N):
            Brd = Brd + ['()','()','()']
        self._theBoard = Brd

    def drawBoard(N):
        """Draws the Board"""
        print(self._theBoard)

前もって感謝します

4

4 に答える 4

10

defと の間にスペースがありません__init__:

def__init__(self, N):

それを追加します:

def __init__(self, N):

drawBoard(N)メソッドにself引数がないことに注意してください。N呼び出されたときに代わりにインスタンスに設定されます。

于 2012-12-21T11:52:54.543 に答える
5

drawBoardクラスのメソッドになるつもりだったと思いますBoard。この場合、self明示的に渡す必要があります。

def drawBoard(self, N):
    """Draws the Board"""
    print(self._theBoard)

他の方法と同じ方法でインデントする必要があります。ここでは、Nパラメーターは役に立たないことに注意してください。

def他の人は、__init__メソッド定義の後にスペースが不足していることをすでに指摘しています。

于 2012-12-21T11:53:24.980 に答える
3

ここにスペースを入れるのを忘れました:

def__init__(self, N):

する必要があります

def __init__(self, N):
于 2012-12-21T11:53:12.337 に答える
0

__init__Pythonでコンストラクターを定義する方法です。defそれが関数であることを宣言するために、その前に置く必要があります。したがって、これを行う正しい方法は次のとおりです。

def __init__():

これは、defとinitの間にスペースを入れます。

于 2012-12-21T11:58:33.063 に答える