如何在Python中创建类的默认对象列表?
我在Python里定义了一个类。
class node(object):
def __init__(self, children = []):
self.children = children
我想创建一个默认对象的列表或数组,这些对象都是这个node
类的。例如,像C++那样。
node * nodes = node[100];
这样的话,nodes
就会指向一个包含100个node
类默认对象的数组。
在Python中怎么做类似的事情呢?谢谢。
3 个回答
3
[node() for _ in range(100)]
class node(object):
def __init__(self, children=None):
if children is None: children = []
self.children = children
In [18]: class node(object):
....: def __init__(self, children = []):
....: self.children = children
....:
In [19]: n1= node()
In [20]: n2 = node()
In [21]: n1.children.append("foo") # add using n1
In [22]: n1.children
Out[22]: ['foo']
In [23]: n2.children # also effects n2's children list
Out[23]: ['foo']
In [24]: class node(object):
....: def __init__(self, children=None):
....: if children is None: children = []
....: self.children = children
....:
In [25]: n1= node()
In [26]: n2 = node()
In [27]: n1.children.append("foo")
In [28]: n1.children
Out[28]: ['foo']
In [29]: n2.children
Out[29]: []
正如我在评论中提到的:
如果你使用了 def __init__(self, children= []):
这样的写法,那么你对这个列表所做的任何修改都会影响到所有的实例:
正确的写法是:
7
使用列表推导式:
nodes = [node() for _ in range(100)]