Ich habe einen Diktat, dessen Schlüssel willkürliche Typen sind und deren Werte eine Zeichenfolge sind, die eine Zeichenfolge aufnehmen und eine Instanz des gleichen Typs wie der Schlüssel zurückgeben. Zum Beispiel: < /p>
Code: Select all
class Hero:
def __init__(self, name):
self.name = name
all_heroes = {
"deadpool": Hero("wade wilson"),
"wolverine": Hero("james howlett")
}
REGISTERED_CONVERTERS = {
Hero: all_heroes.get,
int: int,
}
hero_lookup = REGISTERED_CONVERTERS[Hero]
assert hero_lookup("deadpool").name == "wade wilson"
int_lookup = REGISTERED_CONVERTERS[int]
assert int_lookup("5") == 5
Ich möchte ordnungsgemäß einen Hinweis geben, dass dieser Diktat der Konverterfunktionen
Was nicht funktioniert:
Code: Select all
from typing import Callable, TypeVar
T = TypeVar("T")
TypeConverter = Callable[[str], T]
REGISTERED_CONVERTERS: dict[type[T], TypeConverter] = {
int: int,
}
Code: Select all
Type variable "T" has no meaning in this context Pylance(reportGeneralTypeIssues)
(constant) T: type[T]
Code: Select all
T = TypeVar("T")
REGISTERED_CONVERTERS: dict[type[T], Callable[[str], T]] = {
int: int,
}
Was mache ich falsch oder ist dies ein Pylance -Problem?