是否可以在数据类中使用*参数?

2024-09-29 17:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用dataclasses,它们将是3.7的一个很好的补充。我很好奇是否或者如何能够使用dataclasses重新创建这个类的相同功能。在

class Nav(object):
    def __init__(self, name:str, menu, page, *submenus):
        self.name = name
        self.menu = menu
        self.page = page
        self.submenus = submenus

foo = Nav("name", "menu", "page")

这不管用。引发异常TypeError: __init__() missing 1 required positional argument: 'submenus'

^{pr2}$

我认为这是因为类没有执行参数解包的指令。是否有某种方法可以指示dataclass decorator需要解压子菜单?


Tags: nameself功能objectfooinitdefpage
1条回答
网友
1楼 · 发布于 2024-09-29 17:24:43

我在PEP中看到了一个如何重写__init__的示例。在

Sometimes the generated init method does not suffice. For example, suppose you wanted to have an object to store *args and **kwargs:

@dataclass(init=False)
class ArgHolder:
    args: List[Any]
    kwargs: Mapping[Any, Any]

    def __init__(self, *args, **kwargs):
        self.args = args
        self.kwargs = kwargs

a = ArgHolder(1, 2, three=3)

相关问题 更多 >

    热门问题