不知怎的,在下面的Node类中,wordList
和adjacencyList
变量在Node的所有实例之间共享。
>>> class Node:
... def __init__(self, wordList = [], adjacencyList = []):
... self.wordList = wordList
... self.adjacencyList = adjacencyList
...
>>> a = Node()
>>> b = Node()
>>> a.wordList.append("hahaha")
>>> b.wordList
['hahaha']
>>> b.adjacencyList.append("hoho")
>>> a.adjacencyList
['hoho']
有没有什么方法可以继续使用构造函数参数的默认值(本例中为空列表),但同时使用a
和b
来拥有自己的wordList
和adjacencyList
变量?
我正在使用Python3.1.2。
可变的默认参数通常不能满足您的需要。相反,请尝试以下操作:
让我们来说明这里发生了什么:
可以看到,默认参数存储在tuple中,tuple是所讨论函数的属性。这实际上与所讨论的类无关,而且与任何函数都无关。在python 2中,属性将是
func.func_defaults
。正如其他海报所指出的,您可能希望使用
None
作为哨兵值,并为每个实例提供自己的列表。我会尝试:
强制它复制而不是引用同一对象。
相关问题 更多 >
编程相关推荐