zoukankan      html  css  js  c++  java
  • 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=[]

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

  • 相关阅读:
    19-10-31-B
    19-10-30-Night-V
    19-10-30-C
    19-10-29-Night-X
    19-10-29-Z
    19-10-28-A
    19-10-27-S
    19-10-26-Night-D
    留言板
    优秀博客存档
  • 原文地址:https://www.cnblogs.com/xueli/p/9877517.html
Copyright © 2011-2022 走看看