如何在Python中修改实例属性而不是类属性

时间:2018-12-20 04:30:16

标签: python class instance

我想更改T实例的属性,但是当我调用t1的update_command_list函数时,此类的所有实例属性都被更改。

如果我只想更改实例的属性,应该如何更改代码?

class T():
    def __init__(self, command_list=['a', 'b', 'c']):
        self.command_list = command_list

    def update_command_list(self):
        self.command_list.append('d')

L = []
t1 = T()
t2 = T()
L.append(t1)
L.append(t2)
L[0].update_command_list()
print(L[0].command_list)
print(L[1].command_list)

输出为     ['A B C D']     ['a','b','c','d']

我想要的是     ['A B C D']     ['a','b','c']

1 个答案:

答案 0 :(得分:0)

您需要更改__init__()才能删除默认参数。像这样:

def __init__(self):
    self.command_list = ['a', 'b', 'c']

然后阅读以下SO问题,以了解默认参数如何在python中工作:"Least Astonishment" and the Mutable Default Argument