Код: Выделить всё
from typing import Generic, TypeVar, Union
T = TypeVar('T')
class Bar(object):
def __init__(self, blah: Union[int, str]) -> None:
self.blah = blah
class Foo(Generic[T]):
def __init__(self, bar: T) -> None:
self.bar = bar
@classmethod
def extract(cls, klass: T) -> 'Foo':
return cls(bar=klass(123))
foo = Foo.extract(Bar)
foo.bar # typing says "Any"
foo1 = Foo(Bar(123))
foo1.bar # typing says "Bar" as expected
Снимок экрана аннотации не работает
Однако, если я создаю объект напрямую, он работает нормально.
Снимок экрана с рабочей аннотацией
Я использую VSCode с последней версией pylance и расширение Python при написании этого вопроса.
Пожалуйста, дайте мне знать, если это невозможно или я делаю что-то не так.
ввод объекта, созданного методом класса, для получения аннотации.
Подробнее здесь: https://stackoverflow.com/questions/745 ... ass-method