我想在我的课程中传递默认参数,但是不知何故我遇到了问题:
from dataclasses import dataclass, field
from typing import List
@dataclass
class Pizza():
ingredients: List = field(default_factory=['dow', 'tomatoes'])
meat: str = field(default='chicken')
def __repr__(self):
return 'preparing_following_pizza {} {}'.format(self.ingredients, self.meat)
如果现在尝试实例化Pizza
,则会出现以下错误:
>>> my_order = Pizza()
Traceback (most recent call last):
File "pizza.py", line 13, in <module>
Pizza()
File "<string>", line 2, in __init__
TypeError: 'list' object is not callable
我究竟做错了什么?
从该dataclasses.field
文档:
要使用的参数
field()
是:
- default_factory: 如果提供, 则必须为零参数可调用对象
,当此字段需要默认值时将被调用。除其他用途外,这可用于指定具有可变默认值的字段,如下所述。同时指定default和default_factory是错误的。
您default_factory
不是可调用的0参数,而是一个列表,这是导致错误的原因:
@dataclass
class Pizza():
ingredients: List = field(default_factory=['dow', 'tomatoes']) # <- wrong!
改用lambda函数:
@dataclass
class Pizza():
ingredients: List = field(default_factory=lambda: ['dow', 'tomatoes'])
问题内容: 我在我们的存储过程中使用了一个表值参数。这是我使用的语法: (是用户定义的表类型)。 但是,作为要求,我需要将默认值传递给此表值参数。 但是上面的代码会引发语法错误。是否可以将默认值传递给表值参数?有人可以帮我吗? 问题答案: 您可以默认通过TVP: 这相当于一个空表。
问题内容: 我想按值将列表传递给函数。默认情况下,列表和其他复杂对象通过引用传递给函数。这是一些目标: 可以写得短些吗?换句话说,我不想更改 ad 。 问题答案: 您可以使用,但是对于包含列表(或其他可变对象)的列表,您应该使用: 等价于或,并返回列表的浅表副本。 何时使用:
问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对
我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?
问题内容: 如何将参数传递给表单? 根据以下答案进行编辑: 问题答案: 你应该定义表单的方法,如下所示: 没有意义。创建表单后,必须将属性添加到窗口小部件。尝试这样的事情:
问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后