Python:默认参数替换为错误的副作用值

时间:2017-08-22 16:09:03

标签: python python-3.x side-effects default-parameters

我对python很新,所以可能只是因为我不理解该语言的某些部分。下面是一些代码,为了示例,我设法做了最小的代码:

class A(object):
    def __init__(self):
        self.m = 5

class T(object):
    def __init__(self, x = []):
        self.x = x

def foo():
    t = T()
    t.x.append(A())

def bar():
    r = T()
    print(r.x)

foo()
bar()

当我运行它时,我得到以下结果:

python3 test.py
[<__main__.A object at 0x7f15834af4a8>]

我的理解是对T()的调用应该创建一个T对象并将x初始化为空列表。 我们称之为foo()的事实不应该影响bar中发生的事情,不是吗?

感谢您的帮助。

0 个答案:

没有答案