我在 python 类中的默认参数有问题。似乎当没有给出参数时,默认链接到一个类的所有实例的同一个对象。例子:
class My_class:
def __init__(self,options=[]):
self.options = options
class1 = My_class()
class2 = My_class()
class2.options.append('something')
print(class1.options)
这将打印:
['something']
我如何确保一个类的每个实例都有一个唯一的选项列表,而不是对同一对象的引用。例如,这就是我可以做到的:
def __init__(self,options=None):
if options is None:
options = []
self.options = options
然而,这对我来说并不正确。所以我的问题是是否有更好的方法来做到这一点,并且有人向我解释最初的行为,因为我知道发生了什么,但我不完全理解为什么
这是最常见的Python 问题之一。
Python 的默认参数在定义函数时计算一次,而不是每次调用函数时计算。这意味着如果你使用一个可变的默认参数并改变它,你将并且已经为所有未来对该函数的调用改变了该对象。你的第二个 None 变体很好,在 python 中被广泛使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句