在下面的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
变量?
我正在使用Python 3.1.2。
self.wordList = wordList if wordList is not None else []
,或者稍微不太安全的写法self.wordList = wordList or []
。 - Josh Bleecher SnyderNone
之外也会被视为假值(例如False
、0
、""
、{}
、()
, 还有指定了__nonzero__()
方法的对象)。前者是具体的:None
是唯一会让默认值为[]
的特殊对象。而后者会将所有假值替换为[]
。 - Josh Bleecher Snyder