Python:在类方法上使用contextmanager的意外行为
这个问题在这里已经有了答案:
这种行为是由于默认参数在Python中的工作原理。
尝试将SymList.__init__()
更改为以下内容:
def __init__(self, L=None):
if L is None:
self.L = []
else:
self.L = L
当您在一个实例中修改self.L
,您还正在修改传入SymList.__init__()
的L
,因此使用您的代码的结果是当实例首次初始化时,所有实例将共享相同的L
属性。
上一篇: Python: Unexpected behavior using contextmanager on class method
下一篇: The value of an empty list in function parameter, example here