python不要使用可变对象做为参数的默认值

幽灵乘客例子:对象

blog

 

 

如上:若是为空时,bus2和bus3引用的是相同的一个list,就会形成粗错误it

 实际工做中,若是不想改变某个参数值,那么经过以上这种赋值也会改变引用

解决方式self.passenger=list(passenger),至关于把list(passenger)=passengerim

举个例子:d3

a和c引用的是相同的list对象  但b已经不是另一个新对象的引用了img

a和c同时改变,b的改变是独立的sse

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------co

若是必定要使用?应该怎样定义可变类型默认值呢工作

def __init__(self,passenger=None):
if passenger ==None:
self.passenger=[]

 这样的话,就是为每一个空值分配不一样的对象

相关文章
相关标签/搜索