allInstancesOfFoo = []
class foo(object):
def __init__(self)
allInstancesOfFoo.append(self)
bar1=foo()
bar2=foo()
bar3=foo()
这样做会创建条形图1-3的副本并将它们放在该列表中,或者只是在该列表中为它们添加一个“引用”。而且,我知道Python中没有C风格的引用,但我现在想不出一个更好的词。
此外,对不起,如果这是一个荒谬的问题,我只想确保这样做不会占用它不需要的资源。
答案 0 :(得分:3)
在这种情况下,您的列表将包含对原始对象的引用(bar1
,bar2
和bar3
) - 不会制作副本。
例如:
allInstancesOfFoo = []
class foo(object):
def __init__(self):
allInstancesOfFoo.append(self)
bar1=foo()
bar2=foo()
bar3=foo()
print bar1 is allInstancesOfFoo[0] #True
作为旁注,如果您制作allInstancesOfFoo
的浅表副本,那么它也只会对现有对象进行新的引用:
all_instances_of_foo = allInstancesOfFoo[:]
print all(x is y for x,y in zip(all_instances_of_foo,allInstancesOfFoo)) #True