gpt4 book ai didi

python - 具有默认参数的 python 类 __init__() 方法的神秘行为

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:50 24 4
gpt4 key购买 nike

<分区>

下面的代码说明了我的意思:

class Demo(object):

def __init__(self, data=[]):
self.data = data

def add(self, item):
self.data.append(item)

def get_data(self):
return self.data

def clear(self):
self.__init__()

demo = Demo()

demo.add(1)
demo.add(2)
demo.clear()

print(demo.get_data())

我希望它打印出 []。令人惊讶的是,事实并非如此。

我必须重写类来修复它:

class Demo2(object):

def __init__(self, data=[]):
self.init(data)

def init(self, data=[]):
self.data = data

def add(self, item):
self.data.append(item)

def get_data(self):
return self.data

def clear(self):
self.init()

demo = Demo2()

demo.add(1)
demo.add(2)
demo.clear()

print(demo.get_data())

这次它正确地打印出了 []

python类的__init__()方法有什么特别之处?看起来好像它的参数被缓存了。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com