2017-06-21 281 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

'createsnake()'而不是'__init __()'有什麼意義? –

回答

0

問題是你沒有調用Snake實例的創建方法。這是抱怨,因爲你沒有傳入參數給「self」參數,因爲你在Snake類中調用它。一個蛇的實例將提供自我參數。

嘗試

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

3

當一個函數有一個self參數,這意味着它必須從類的實例調用。

這意味着您不能直接致電createsnakeSnake;你必須首先使 a Snake

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

另外,如果你希望能夠調用從Snake類的功能,你應該做的函數靜:

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

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的對象類似,謝謝! –