Как я могу описать, что моя функция возвращает (или требует) объект того же типа, что и класс, который я создаю? [дубликPython

Программы на Python
Anonymous
Как я могу описать, что моя функция возвращает (или требует) объект того же типа, что и класс, который я создаю? [дублик

Сообщение Anonymous »

У меня возникла непредвиденная проблема. Это случайный пример, но опишите проблему самостоятельно.
С помощью этого кода:

Код: Выделить всё

class Location:
def __init__(self, name: str) -> None:
self.name = name

def __repr__(self) -> str:
return f"Location(name={self.name})"

def __eq__(self, other: Location) -> bool:
return self.name == other.name
У меня ошибка: «Местоположение» не определено.
Мне нужно определить другое > параметр должен быть объектом Location.
Подумав немного, это нормальное поведение, потому что до определения класса самого класса Location не существовало.
Я ищу и нашел это решение:

Код: Выделить всё

from typing import TypeVar

LocationType = TypeVar("LocationType", bound="Location")

class Location:
def __init__(self, name: str) -> None:
self.name = name

def __repr__(self) -> str:
return f"Location(name={self.name})"

def __eq__(self, other: LocationType) -> bool:
return self.name == other.name
И код работает нормально. Но не существует ли более «красивого» решения? xd
Это правильное решение? Я знаю, что типизация не интегрирована с Python и предназначена только для проверки типов, но я думаю, что это не очень хорошее решение.


Подробнее здесь: https://stackoverflow.com/questions/770 ... e-type-tha

Вернуться в «Python»