Python attr库类是否共享默认值?
下面是一个奇怪的attr行为示例Python attr库类是否共享默认值?,python,attr,Python,Attr,下面是一个奇怪的attr行为示例 import attr @attr.s class List: l = attr.ib(default=[]) a = List() b = List() a.l.append(1) print(b.l) # output is [1], this is unintuitive, why not [] 为什么会发生这种情况?我如何获得每次都会获得一个新列表的行为?尽管我对attr包不太了解。但是我非常确定l是类List的一个静态变量,这意味着它不是
import attr
@attr.s
class List:
l = attr.ib(default=[])
a = List()
b = List()
a.l.append(1)
print(b.l)
# output is [1], this is unintuitive, why not []
为什么会发生这种情况?我如何获得每次都会获得一个新列表的行为?尽管我对
attr
包不太了解。但是我非常确定l
是类List
的一个静态变量,这意味着它不是一个成员变量,它在List
的所有实例中都是共享的。您可能希望使其成为一个成员变量。下面的代码将为列表的每个实例创建一个“私有”列表
有关文档,请参阅
import attr
@attr.s
class List:
l = attr.ib(factory=list)
列表default=[]
在list
实例之间共享。