我有一些具有属性字典obj.attrs
的对象。这些对象的构造函数接受一个字典和/或**kwargs
以提高方便性。
它看起来像这样:
class Thing:
def __init__(self, attrs={}, **kwargs):
for arg in kwargs:
attrs[arg] = kwargs[arg]
self.attrs = attrs
这样 Thing({'color':'red'})
就和 Thing(color='red')
一样。
我的问题在于构造函数会以某种方式“记住”上一次传递给它的 attrs
值。
例如:
>>> thing1 = Thing(color='red')
>>> thing2 = Thing()
>>> thing2.attrs
{'color': 'red'}
...但是thing2.attrs
应该只是一个空字典!{}
这让我想知道,是否同时使用**kwargs
和像attrs={}
这样的参数会存在问题。
有什么想法吗?