我有一个问题与mypy和通用的T参数。我正在使用sqlalchemy sessionsget()方法从数据库检索某些内容(代码可以工作)。我正在注入(self.model=model)我在其他地方定义的SqlalchemyORM模型之一。
myypy给我留言:
Variable "my_project.repositories.sql_repo.Foo.Optional" is not valid as a type [valid-type]mypy
See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliasesmypy
T = TypeVar("T")
class Foo(Generic[T]):
def __init__(self, model: Type[T], db: db_session) -> None:
super().__init__()
self.model = model
self.db = db
def get_by_id(self, item_id: int) -> Optional[T]:
return self.session().get(self.model,item_id)
在我的导入中出现了错误,我不小心从输入import Optional"在我的课堂上。当然,导入应该在顶层。请注意,我仍然没有完全理解我的错误的含义。
# ..... IMPORT SHOULD BE AT THE TOP ...
from typing import Optional
# .............................
T = TypeVar("T")
class Foo(Generic[T]):
# ..... HERE WAS THE ERROR ...
from typing import Optional
# .............................
def __init__(self, model: Type[T], db: db_session) -> None:
super().__init__()
self.model = model
self.db = db
def get_by_id(self, item_id: int) -> Optional[T]:
return self.session().get(self.model,item_id)