2015-03-12 3 views
0

Я пытаюсь создать класс Pawn для шахматной игры, но я получаю ошибку «NameError: name« self »не определен» в «can_move» "функция first if if, хотя я определяю цвет как вход в функцию initialize? Есть идеи?Class Help: «NameError: name« self »не определен»

class Pawn(object): 
    def __init__(self, x, y, colour): 
     #store the pawns coords 
     self.x = x 
     self.y = y 
     #store the colour of the piece 
     self.colour = colour 
     #store if it moved yet or not 
     self.moved = False 
     self.print_value = self.colour+"P" 
    def can_move(newx, newy): 
     #func to check if piece can move along those coords 
     if self.colour == "W": 
      pieces = game_tracker.live_white 
     elif self.colour == "B": 
      pieces = game_tracker.live_black 
+1

передать себя, чтобы can_move. – CentAu

ответ

1

Вы должны добавить себя в качестве аргумента, представляющий текущий экземпляр класса. Также отступ.

class Pawn(object): 

    def __init__(self, x, y, colour): 
     #store the pawns coords 
     self.x = x 
     self.y = y 
     #store the colour of the piece 
     self.colour = colour 
     #store if it moved yet or not 
     self.moved = False 
     self.print_value = self.colour+"P" 

    def can_move(self, newx, newy): 
     #func to check if piece can move along those coords 
     if self.colour == "W": 
      pieces = game_tracker.live_white 
     elif self.colour == "B": 
      pieces = game_tracker.live_black 
+0

А, казалось бы, я сделал дерьмо, должен заметить себя! (Также он правильно отступил, просто вставив его неправильно). Спасибо за ответ! – Paradox

+0

Пожалуйста, отметьте как ответ. –

2

Методы экземпляра необходимо self в первый аргумент

def can_move(self, newx, newy): 

В противном случае метод не знает, какой экземпляр он работает на

Смежные вопросы