Как я могу описать, что моя функция возвращает (или требует) объект того же типа, что и класс, который я создаю? [дублик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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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