Форум сайта python.su
Пишу настольную игру. Редактор - VS Code с Pylance. Используя аннотации типов, столкнулся с проблемой проверки.
from typing import Final, TypedDict Square = int EMPTY: Final = None class Color(Enum): """Enum for piece colors.""" RED = True BLUE = False class PieceType(Enum): """Enum for piece types.""" FLAG = 0 MARSHAL = 1 class Piece: """A piece with type and color.""" def __init__(self, type: PieceType, color: Color) -> None: self._type = type self._color = color @property def type(self) -> PieceType: """The type of the piece.""" return self._type @property def color(self) -> Color: """The color of the piece.""" return self._color class Board: """A gameboard.""" SIDE: Final = 10 SIZE: Final = SIDE * SIDE def __init__(self) -> None: self._squares: list[Piece | None] = [EMPTY] * Board.SIZE def setup(self) -> None: # Исключительно для примера. self._squares[0] = Piece(PieceType.MARSHAL, Color.RED) self._squares[1] = Piece(PieceType.FLAG, Color.RED) self._squares[99] = Piece(PieceType.MARSHAL, Color.BLUE) self._squares[98] = Piece(PieceType.FLAG, Color.BLUE) def setup(self, square: Square) -> Color | None: if self._squares[square] is EMPTY: return None else: # А вот здесь Pylance ругается, что "color" is not a known member of "None" return self._squares[square].color
Офлайн
Попробуй для начала убрать одинаковые имена у setup(). Не пользуешься первым - закомментируй его.
tathagataОн может быть написан на коленке и он может подумать из-за этого, что там метод setup() один и взять его, а содержимое двух методов setup() склеить воедино как строки одного тела метода. Что угодно там может быть.
Pylance ругается
Отредактировано py.user.next (Фев. 13, 2023 22:59:25)
Офлайн