2017-06-21 14 views
0

私はPythonで蛇を作成しようとしていますが、私は蛇になるオブジェクトを通してこれをやっています。私はオブジェクト内からcreateSnake関数を呼び出そうとしていますが、引数は受け入れられていません。Pythonオブジェクトが引数を受け付けていません

私のIDEは戻っている:ここでは

TypeError: createsnake() missing 1 required positional argument: 'y_coordinate' 

は私のヘビのコードです:

class Snake(object): 
def createsnake(self, x_coordinate, y_coordinate): 
    grid[x_coordinate][y_coordinate] = 2 

そして、ここでは、私はメソッドを呼び出しています方法です:

Snake.createsnake(1, 1) 
+2

'__init __()'ではなく 'createsnake()'のポイントは何ですか? –

答えて

0

問題はあなたですSnakeのインスタンスでcreateメソッドを呼び出すことはありません。 Snakeクラスで呼び出すため、パラメータを "self"パラメータに渡さないため、不平を言っています。 snakeのインスタンスは、selfパラメータを供給します。関数がクラスのインスタンスから呼び出されなければならないことを意味selfパラメータを有する場合

snake = Snake() snake.createsnake(1,1)

3

を試してみてください。

これは、Snakeから直接createsnakeを呼び出すことができないことを意味します。あなたはSnakeとする必要があります。あなたの関数がすることを意図しているので

class Snake(object): 
    @staticmethod 
    def createsnake(x_coordinate, y_coordinate): 
     grid[x_coordinate][y_coordinate] = 2 

Snake.createsnake(1, 1) 

別のオプション、:あなたはがSnakeクラスから関数を呼び出すことができるようにしたいん場合

snake = Snake() 
snake.createsnake(1, 1) 

あるいは、あなたは静的関数を作成する必要があります何らかの初期化を実行します。関数をコンストラクタに変更して、新しいものを作成するとすぐに実行されます。Snake

class Snake(object): 
    def __init__(self, x_coordinate, y_coordinate): 
     grid[x_coordinate][y_coordinate] = 2 

snake = Snake(1, 1) 
+0

Javaがオブジェクトを実行する方法と似ています。ありがとう! –

関連する問題