我最近开始使用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")
我认为这是因为该类没有指令来解析参数。 有没有办法指示数据类装饰器需要解压缩子菜单?
答案 0 :(得分:5)
我在PEP中看到了如何覆盖 @Formula("noOfItemsSelected")
private float noOfItemsDispatched;
的示例。
有时生成的 init 方法不够用。例如, 假设您想要一个对象来存储* args和** kwargs:
__init__