В Python вам не нужно объявлять тип ваших аргументов, как в Java, C#, C ++, et c. Python динамически типизирован, поэтому интерпретатор определит, какие объекты вы передаете во время выполнения.
Измените свой код следующим образом:
class Spot:
def __init__(self, x, y, piece):
self.x = x
self.y = y
self.piece = piece
Если вы действительно хотите указать типов данных, вы можете использовать функцию Python подсказки типов следующим образом:
class Spot:
def __init__(self, x: int, y: int, piece: Piece):
self.x = x
self.y = y
self.piece = piece
Несколько других указателей:
- Вам не нужно сравнивать логическое значение операторов, использующих
x == True
, вы можете просто вернуть логическую переменную x
, которая будет иметь тот же эффект. - Вы всегда должны использовать snake_case в Python, поэтому
is_white
вместо iswhite
. - Вам не нужно таким образом инициализировать переменные в классе
Piece
. Вы можете сделать это в методе __init__
напрямую, используя аргументы по умолчанию. Поэтому, если пользователь не предоставляет аргумент, для этого аргумента будет использоваться значение по умолчанию.
class Piece:
def __init__(self, white=False, killed=False):
self.white = white
self.killed = killed
def is_white(self):
return self.white
def is_killed(self):
return self.killed