typing.overload decorator type-hints don’t seem to work with enum.Enum
I have a class that with a method called ‘get_component’. This method should return the component that has a matching ID to the one given. The IDs are stored as Enums.
Each one of the components stored inside of the main class has different attributes and methods associated with it.
In order to make my code more readable and easy to deal with, I want to use @overload with the ‘get_component’ method multiple times so that the type-hints function correctly for each component.
Additionally, I am using python3.12 and VSCode.
Here is some code I wrote that illustrates the problem:
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)
Brett Dean is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.