当前位置: 首页 > 知识库问答 >
问题:

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

訾稳
2023-03-14

我最近开始使用数据类,它们将是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")

这不管用。引发异常类型错误:__init__()缺少1个必需的位置参数:“子菜单”

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

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

我假设这是因为类没有说明进行参数的解包。有什么方法可以指示数据类装饰器子菜单需要解包吗?

共有1个答案

欧阳正卿
2023-03-14

我在PEP中看到了一个如何覆盖__init__的示例

有时,生成的 init 方法是不够的。例如,假设您想要一个对象来存储 *args 和 **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)
 类似资料:
  • 是否可以在同一类的类的方法中使用类型注释?假设我有一个向量类,这个类支持。 像这样的东西: 这当然行不通。是否有其他类似的方法或解决方法?

  • 问题内容: 我想创建一个使用PDO与MySQL交互的类。我可以使用PDO创建一个新的MySQL表吗? 问题答案: 是的你可以。 该部分是PDO构造函数的第一个参数,不必具有数据库名称。您可以简单地使用。然后,如果您具有适当的特权,则可以使用常规SQL命令创建数据库和用户等。 以下是install.php的示例,它以root用户身份登录,创建一个数据库,一个用户,并向用户授予对新创建的数据库的所有特

  • 问题内容: 我正在尝试将图像存储在SQL Server数据库中,应该使用哪种数据类型? 在下面的内容中,我试图从请求输入流中读取所有字节并将其存储在数据库中,但是该数组在表中未正确更新。我想念什么吗? 问题答案: 您可以使用“是”。您最好去存储它们。 您可以像这样使用它:

  • 对于我的学士论文,我必须开发一个3d视图来可视化来自医疗器械的跟踪数据。其他学生已经开发了一个用于进一步处理Java跟踪数据的开源软件。该项目使用JavaFX作为GUI。 目标: > 集成用于3d可视化的库 三维可视化视图的实现 测试软件 由于我是图形编程新手,我真的不知道从哪里开始。 Java FX是否能够实时显示3d数据,或者我是否需要另一个像LWJGL这样的库? 谢啦!

  • 问题内容: 我想命名一个CSS类,并将其命名为imgSuper。我可以在CSS类中使用camelCasing吗? 问题答案: 从技术上讲是可以的,但是这是有风险的,因为CSS语法几乎不区分大小写,但是在某些情况下,在某些浏览器中,类名被视为区分大小写,因为规范未指定将CSS规则与HTML类匹配时浏览器应如何处理大小写名称。 从规范,4.1.3节: 所有CSS语法在ASCII范围内都不区分大小写…

  • 问题内容: 我打算在我的代码中使用以获得更好的性能。 但是,出现以下错误: 我尝试了另一种方式,并收到此错误: 我的代码如下所示: 我认为由于未在main函数中使用而引起了错误。 我的猜想对吗?以及如何修改代码以修复错误? 问题答案: 问题是您在实例中有一个无法拾取的实例变量()。因为您正在调用实例方法,并且您正在Windows上运行,所以整个实例都必须是可腌制的,才能将其传递给子进程。是一个打开