Is is possible to create a default initializer to python dataclasses initializing a 2D array, i.e. resulting in the same as
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)
but without the b
argument. Result:
AlgoData(list2D=[[], [], [], [], []], list1D=[])
You can use a lambda
function instead as a 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()
a
becomes:
AlgoData(list2D=[[], [], [], [], []], list1D=[])