我想避免在创建对象的新实例并使用该对象后更改用户参数。在这里立即复制 init ()方法中的关键参数或者有更好的解决方案是不错的做法?
这是一个具体的例子:
import copy
class Myclass:
def __init__(self, x):
self.x = copy.deepcopy(x)
def change(self):
self.x[0] += 1
>>> x = [0]
>>> C = Myclass(x)
>>> C.change()
>>> print(x)
0
答案 0 :(得分:1)
Fluent Python的作者 - 卢西亚诺·拉马霍 - 在__init__.py
的“应对”一书中有一些例子,我倾向于与他结盟。
他不使用深层复制,但他只是利用你可以用另一个初始化列表。为您节省import
。
class MyClass:
def __init__(self, options: list):
self.options = list(options)
好书;强烈推荐。