rdemaria / pysixtrack

Reference sixtrack tracking engine in pure python
Apache License 2.0
1 stars 12 forks source link

Issue with Line constructor and defaults #15

Open giadarol opened 5 years ago

giadarol commented 5 years ago
In [2]: import pysixtrack

In [3]: pysixtrack.Line()
Out[3]: Line(elements=[])

In [4]: l1 = pysixtrack.Line()

In [5]: l1.elements.append('hello')

In [6]: l2 = pysixtrack.Line()

In [7]: l2
Out[7]: Line(elements=['hello'])
giadarol commented 5 years ago

Multipoles do the same:

In [8]: m1 = pysixtrack.Multipole()

In [11]: m1.knl.append(10)

In [12]: m2 = pysixtrack.Multipole()

In [14]: m2
Out[14]: Multipole(knl=[10], ksl=[], hxl=0, hyl=0, length=0)
giadarol commented 5 years ago

Solve like this:

-            setattr(self, name, nargs.get(name, default))
+            setattr(self, name, deepcopy(nargs.get(name, default)))

What do you think?