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
---当才华撑不起你的野心的时候,请努力!---跑起来。