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=[]
这样的话,就是为每个空值分配不同的对象