Mar*_*son 13 python python-3.x python-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")
Run Code Online (Sandbox Code Playgroud)
这不起作用.提出例外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")
Run Code Online (Sandbox Code Playgroud)
我假设这是因为该类没有指令来解析参数. 有没有办法指示数据类装饰器需要解压缩子菜单?
我在PEP中看到了有关如何覆盖的示例__init__。
有时,生成的init方法不够用。例如,假设您想要一个对象来存储* args和** kwargs:
Run Code Online (Sandbox Code Playgroud)@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)