python的幽灵问题之初始化同一个对象

class HBus:
    """备受幽灵乘客折磨的校车"""
    def __init__(self, passengers=[]):
        self.passengers = passengers

    def pick(self, name):
        self.passengers.append(name)

    def drop(self, name):
        self.passengers.remove(name)

print("------------------------------")
bus2 = HBus()
bus2.pick('2li')
print(bus2.passengers)

print("------------------------------")
bus3 = HBus()
print(bus3.passengers)

结果:print(bus3.passengers)居然是2li

因为:当我们再创建一辆 空 车的时候,发现他默认会绑定前面的类留下的值
解决方法:

class TwilightBus:

def __init__(self, passengers=None):
if passengers is None:
self.passengers = []
else:
self.passengers = list(passengers) # 这里只是浅复制

def pick(self, name):
self.passengers.append(name)

def drop(self, name):
self.passengers.remove(name)

参考:https://blog.csdn.net/weixin_44038881/article/details/106739102







posted on 2021-07-20 11:04  星星眨着眼  阅读(127)  评论(0编辑  收藏  举报

导航