这两种情况之间有什么区别?如何在Python中处理它?</ p>
练习1
class MyClass:
anArray = {}
练习2
class MyClass:
__init__(self):
self.anArray = {}
在第一个例子中,似乎数组被视为静态变量。 Python如何处理这个问题,原因是什么?
答案 0 :(得分:5)
在第一个示例中,anArray
(在Python中称为字典,而不是数组)是类属性。可以使用MyClass.anArray
访问它。一旦定义了类,它就会存在。
在第二个示例中,anArray
是实例属性。可以使用MyClass().anArray
访问它。 (但请注意,这样做只会丢弃创建的MyClass
实例;更明智的例子是mc = MyClass(); mc.anArray['a'] = 5
。)在创建类的实例之前,它不存在。
答案 1 :(得分:0)
宣布不同的区域。 Ex1就像全局变量或静态变量。
obj = MyClass()
obj2 = MyClass()
print "IS one instance ", id(obj.anArray) == id(obj2.anArray)
Ex2是本地属性。
obj = MyClass()
obj2 = MyClass()
print "IS one instance ", id(obj.anArray) == id(obj2.anArray)