类方法中的默认参数不是唯一的python

用户3053216

我在 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章