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

幽灵乘客例子:

 

 

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

 实际工作中,如果不想改变某个参数值,那么通过以上这种赋值也会改变

解决方式self.passenger=list(passenger),相当于把list(passenger)=passenger

举个例子:

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

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

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果一定要使用?应该怎样定义可变类型默认值呢

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

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

 

posted @ 2018-10-30 16:42  米 立  阅读(1035)  评论(0编辑  收藏  举报