There should be an inverse of `Type`
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’annotation proposée Instance[_ThingClass] et comparez-la au modèle Type[_ThingInstance] présenté. Définissez le comportement de l’inverse pour les méthodes de métaclasse et vérifiez les exemples avec une couverture de vérification de types ; le travail est considéré comme terminé lorsque les annotations demandées sont acceptées avec les types d’instance inférés attendus.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 28/100