包含初始化集的数据类?
dataclass containing initalized set?
我正在尝试使用数据class 来做某事,我需要在其中初始化一个空集,但我不知道该怎么做。在使用数据 class(只是常规的 class)之前,我的工作等效项是 self.children = set()
,这对我的目的来说很好。我怎样才能在数据class?
中获得等价物
我需要它默认初始化,不必每次都作为参数传递。
from dataclasses import dataclass, field
@dataclass(unsafe_hash=True)
class Node:
index: int
name: str
children: set = field(default_factory=set, hash=True)
尝试将项目添加到集合时出现错误。正在添加的项目是节点类型(上面的 class)。
root.children.add(child)
File "<string>", line 2, in __hash__
TypeError: unhashable type: 'set'
是:
children: set = field(default_factory=set)
默认的factory是一个函数,在初始化returns初始值的字段时将被调用。因此,传递它 set
而不调用它 ,这是一个函数,当调用时 returns 一个新的集合。您还必须为数据类添加 : set
类型注释以将其作为字段选取。
我正在尝试使用数据class 来做某事,我需要在其中初始化一个空集,但我不知道该怎么做。在使用数据 class(只是常规的 class)之前,我的工作等效项是 self.children = set()
,这对我的目的来说很好。我怎样才能在数据class?
我需要它默认初始化,不必每次都作为参数传递。
from dataclasses import dataclass, field
@dataclass(unsafe_hash=True)
class Node:
index: int
name: str
children: set = field(default_factory=set, hash=True)
尝试将项目添加到集合时出现错误。正在添加的项目是节点类型(上面的 class)。
root.children.add(child)
File "<string>", line 2, in __hash__
TypeError: unhashable type: 'set'
是:
children: set = field(default_factory=set)
默认的factory是一个函数,在初始化returns初始值的字段时将被调用。因此,传递它 set
而不调用它 ,这是一个函数,当调用时 returns 一个新的集合。您还必须为数据类添加 : set
类型注释以将其作为字段选取。