如何在数据类中输入提示`**kwargs`?

问题描述 投票:0回答:1

我有一个像这样的类,字段成员由不同类型组成,在我的类中我有

__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__
是不可能的。

python type-hinting
1个回答
0
投票

你不能

Unpack
a
dataclass
。只需使用
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)
© www.soinside.com 2019 - 2024. All rights reserved.