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

时间:2018-06-08 16:27:12

标签: python python-3.x python-dataclasses

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

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'

@dataclass
class Nav(object):
    name:str
    menu: Any
    page: Any
    submenus: tuple

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

我认为这是因为该类没有指令来解析参数。 有没有办法指示数据类装饰器需要解压缩子菜单?

1 个答案:

答案 0 :(得分:5)

我在PEP中看到了如何覆盖 @Formula("noOfItemsSelected") private float noOfItemsDispatched; 的示例。

  

有时生成的 init 方法不够用。例如,   假设您想要一个对象来存储* args和** kwargs:

__init__