1

I want to use the new @dataclass decorator in my code with attribut as mutable list Something that would look like this

from dataclasses import dataclass

@dataclass
class Metrics
    accuracy: list = []
    loss: list = []

...

def do_stuff(data):
    m = Metrics()

    for i in range(0, 10):
        m.accuracy.append(accuracy_def(i))
        m.loss.append(loss_def(i))

    return m

But I have this error:

TypeError: __init__() missing 2 required positional arguments: 'accuracy' and 'loss'

Ragnar
  • 2,550
  • 6
  • 36
  • 70

1 Answers1

3

Use dataclasses.field() instead

@dataclass
class Metrics:
    accuracy: List[int] = field(default_factory=list)
    loss: List[int] = field(default_factory=list)
Filip Młynarski
  • 3,534
  • 1
  • 10
  • 22