如果我有一个"工厂"方法,用一个类的类型和相关的参数来创建一个资源,有没有办法对参数进行静态分析?
from typing import Type
from pydantic import BaseModel
class Res(BaseModel):
f: int
class Config:
extra = "forbid"
def factory[T](resource_type: Type[T], **kwargs) -> T:
return resource_type(**kwargs)
factory(Res, f=3) # no problem!
factory(Res, f=3, g=4) # ValidationError, g is not allowed.
这在运行时按预期工作.我希望pyright静态地注意到,对于Res
,g
不是一个有效的参数.
这有可能吗?我正朝ParamSpecs的方向看,但它还没有帮助.
def factory[T, **P](resource_type: Type[T], *args: P.args, **kwargs: P.kwargs) -> T:
return resource_type(**kwargs)
factory(Res, f=3) # says: Param spec "P@factory" has no bound value