Estoy escribiendo una clase CustomEnum en la que quiero agregar algunos métodos de ayuda, que luego estarían disponibles para las clases que subclasifican mi CustomEnum. Uno de los métodos es devolver un valor de enumeración aleatoria, y aquí es donde estoy atascado. La función funciona como se esperaba, pero en el lado de la sugerencia de tipo, no puedo encontrar una manera de decir "el tipo de retorno es el mismo tipo de cls" .
Estoy bastante seguro de que hay algo de TypeVar o magia similar involucrada, pero como nunca tuve que usarlos, nunca me tomé el tiempo para descubrirlos.
class CustomEnum(Enum): @classmethod def random(cls) -> ???: return random.choice(list(cls)) class SubclassingEnum(CustomEnum): A = "a" B = "b" random_subclassing_enum: SubclassingEnum random_subclassing_enum = SubclassingEnum.random() # Incompatible types in assignment (expression has type "CustomEnum", variable has type "SubclassingEnum")¿Alguien puede ayudarme o darme una pista sobre cómo proceder?
¡Gracias!