There should be an inverse of `Type`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Specifically, it would be nice if there was a keyword Instance such that Instance[Type[_T]] is equivalent to _T
I'm thinking about this mostly in the context of working with metaclasses.
Suppose I have a class with a class method that creates an instance of the class written so it can be reused by subclasses. This can be typed in the following way:
_ThingInstance = TypeVar('_ThingInstance', bound='Thing')
class Thing():
@classmethod
def make_new(cls: Type[_ThingInstance]) -> _ThingInstance:
return cls()
And this is automatically usable by subclasses.
What I want is an Instance type such that I can correctly type the same logic defined within a metaclass like so:
_ThingClass = TypeVar('_ThingClass', bound='MetaThing')
class MetaThing(type):
def make_new(cls: _ThingClass) -> Instance[_ThingClass]:
return cls()
As far as I can tell, there's no way to correctly annotate this
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Parta de la anotación propuesta Instance[_ThingClass] y compárela con el patrón mostrado Type[_ThingInstance]. Defina cómo debería comportarse la inversa para los métodos de metaclase y verifique los ejemplos con cobertura de comprobación de tipos; se considera terminado cuando las anotaciones solicitadas se aceptan con los tipos de instancia inferidos previstos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 28/100