ryn*_*ynd 2 python arrays append instantiation instance
我在Python中遇到了一个我无法相信的问题.请参阅以下代码:
class Container(object):
array = []
def __init__(self):
print self.array
for i in range(0, 5):
container = Container()
container.array.append('Test')
print 'Last Container:', container.array
Run Code Online (Sandbox Code Playgroud)
输出是:
[]
['Test']
['Test', 'Test']
['Test', 'Test', 'Test']
['Test', 'Test', 'Test', 'Test']
Last Container: ['Test', 'Test', 'Test', 'Test', 'Test']
Run Code Online (Sandbox Code Playgroud)
我认为Container
该类在实例化时使用顶部的值进行初始化.为什么不是这样?
谢谢!
其中的代码在class:
创建类时执行,而不是在创建类的实例时执行.这是一个更清楚地显示这一点的例子:
>>> class Test(object):
... print "Test"
... def __init__(self):
... print "init"
...
Test
>>> t = Test()
init
Run Code Online (Sandbox Code Playgroud)
请注意,在创建类时打印"Test",而不是在创建Test对象时打印.
正如其他答案所指出的那样,如果您希望属性对于类的特定实例(而不是类的所有实例)是本地的,那么代码必须放在__init__
方法中:
def __init__(self):
self.array = []
Run Code Online (Sandbox Code Playgroud)