我有一个像这样的类,字段成员由不同类型组成,在我的类中我有
__new__(cls, **kwargs)
,我想输入提示 **kwargs
。
from dataclasses import dataclass
from typing import Optional
@dataclass
class Foo
var1: int
var2: float
var3: bool
var4: str
var5: Optional[list[float]]
def __new__(cls, **kwargs) -> "Foo":
return super(Foo, cls).__new__(cls)
我理想地希望能够做类似的事情:
from dataclasses import dataclass
from typing import Optional
from typing_extensions import Unpack
@dataclass
class Foo
var1: int
var2: float
var3: bool
var4: str
var5: Optional[list[float]]
def __new__(cls, **kwargs: Unpack[Foo]) -> "Foo":
return super(Foo, cls).__new__(cls)
但是在
Foo
内引用 __new__
是不可能的。
你不能
Unpack
adataclass
。只需使用 TypedDict
,它会更长,但我敢打赌这是您能得到的最好的。
class FooArgs(TypedDict):
var1: int
var2: float
var3: bool
var4: str
var5: Optional[list[float]]
@dataclass
class Foo
var1: int
var2: float
var3: bool
var4: str
var5: Optional[list[float]]
def __new__(cls, **kwargs: Unpack[FooArgs]) -> "Foo":
return super(Foo, cls).__new__(cls)