by Anonymous » 11 May 2025, 22:44
Der Kontext:
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
Das Problem:
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,
}
Pylance ist mit dem t im TypeConverter alias zufrieden, beschwert sich jedoch über den T -Taste T :
Code: Select all
Type variable "T" has no meaning in this context Pylance(reportGeneralTypeIssues)
(constant) T: type[T]
Ich dachte
Code: Select all
T = TypeVar("T")
REGISTERED_CONVERTERS: dict[type[T], Callable[[str], T]] = {
int: int,
}
Das scheint schlechter zu sein, da Pylance jetzt die gleiche Beschwerde über beide t s
Was mache ich falsch oder ist dies ein Pylance -Problem?
[b] Der Kontext: [/b]
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]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
[/code]
[b] Das Problem: [/b]
Ich möchte ordnungsgemäß einen Hinweis geben, dass dieser Diktat der Konverterfunktionen
[b] Was nicht funktioniert: [/b]
[code]from typing import Callable, TypeVar
T = TypeVar("T")
TypeConverter = Callable[[str], T]
REGISTERED_CONVERTERS: dict[type[T], TypeConverter] = {
int: int,
}
[/code]
Pylance ist mit dem t im TypeConverter alias zufrieden, beschwert sich jedoch über den T -Taste T :
[code]Type variable "T" has no meaning in this context Pylance(reportGeneralTypeIssues)
(constant) T: type[T]
[/code]
Ich dachte[code]T = TypeVar("T")
REGISTERED_CONVERTERS: dict[type[T], Callable[[str], T]] = {
int: int,
}
[/code]
Das scheint schlechter zu sein, da Pylance jetzt die gleiche Beschwerde über beide t s
Was mache ich falsch oder ist dies ein Pylance -Problem?