Dan*_*Dan 0 python arguments initialization instantiation
为什么如下:
class A(object):
def __init__(self, var=[]):
self._var = var
print 'var = %s %s' % (var, id(var))
a1 = A()
a1._var.append('one')
a2 = A()
Run Code Online (Sandbox Code Playgroud)
造成:
var = [] 182897439952
var = ['one'] 182897439952
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在使用可选关键字参数时它没有使用列表的新实例,有人能解释一下吗?
在创建函数本身时,将创建一次函数定义中的空列表.每次调用函数时都不会创建它.
如果您每次都想要一个新的,请执行以下操作:
class A(object):
def __init__(self, var=None):
if var is None:
var = []
self._var = var
Run Code Online (Sandbox Code Playgroud)