我注意到以下几点:
class c:
def __init__(self, data=[]):
self._data=data
a=c()
b=c()
a._data.append(1)
print b._data
[1]
这是正确的行为吗?
是的,这是正确的行为。
但是,从你的问题来看,这似乎不是你所期望的。
如果您希望它符合您的期望,请注意以下事项:
规则 1. 不要使用可变对象作为默认值。
def anyFunction( arg=[] ):
不会创建新的列表对象。默认列表对象arg
将在各处共享。
相似地
def anyFunction( arg={} ):
不会创建新的 dict 对象。这个默认字典将被共享。
class MyClass( object ):
def __init__( self, arg= None ):
self.myList= [] if arg is None else arg
这是提供默认参数值(即新的空列表对象)的常见方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)