Как я могу заставить typing.overload работать с enum.Enum?Python

Программы на Python
Anonymous
Как я могу заставить typing.overload работать с enum.Enum?

Сообщение Anonymous »

Подсказки типов декоратора typing.overload, похоже, не работают с enum.Enum
У меня есть класс с методом под названием 'get_comComponent'. Этот метод должен возвращать компонент, идентификатор которого соответствует указанному. Идентификаторы хранятся в виде перечислений.
Каждый из компонентов, хранящихся внутри основного класса, имеет разные атрибуты и методы, связанные с ним.
В Чтобы сделать мой код более читабельным и простым в использовании, я хочу использовать @overload с методом get_comComponent несколько раз, чтобы подсказки типа работали правильно для каждого компонента.
Кроме того, я использую python3.12 и VSCode.
Вот написанный мною код, иллюстрирующий проблему:
from typing import overload
from enum import Enum

class Ent:
def __init__(self):
self.comps = []

@overload
def get_comp(self, id:'CompType.MOVE') -> 'Move': ...

@overload
def get_comp(self, id:'CompType.POSITION') -> 'Position': ...

def get_comp(self, id:int) -> 'Comp':
...

class Comp:
def __init__(self):
self.id = CompType.NONE

class Move(Comp):
def __init__(self):
self.id = CompType.MOVE

class Position(Comp):
def __init__(self):
self.id = CompType.POSITION

class CompType(Enum):
NONE = 0
MOVE = 1
POSITION = 2

if __name__ == '__main__':
ent = Ent()
ent.comps.append(Move())
ent.comps.append(Position())

comp1 = ent.get_comp(CompType.MOVE)
comp2 = ent.get_comp(CompType.POSITION)


Подробнее здесь: https://stackoverflow.com/questions/787 ... -enum-enum

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