mrt*_*rsn 9 python-3.x python-3.7 python-dataclasses
可以为初始化 2D 数组的 python 数据类创建默认初始化程序,即结果与
from dataclasses import dataclass, field
from typing import List
MAX = 5
@dataclass
class AlgoData:
list2D: List[List[int]] # = ???
list1D: List[int] = field(default_factory=list)
b = [[] for m in range(MAX)]
a = AlgoData(b)
Run Code Online (Sandbox Code Playgroud)
但没有b
争论。结果:
AlgoData(list2D=[[], [], [], [], []], list1D=[])
Run Code Online (Sandbox Code Playgroud)
blh*_*ing 11
您可以使用lambda
函数代替default_factory
for field
:
from dataclasses import dataclass, field
from typing import List
MAX = 5
@dataclass
class AlgoData:
list2D: List[List[int]] = field(default_factory=lambda: [[] for m in range(MAX)])
list1D: List[int] = field(default_factory=list)
a = AlgoData()
Run Code Online (Sandbox Code Playgroud)
a
变成:
AlgoData(list2D=[[], [], [], [], []], list1D=[])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8007 次 |
最近记录: |