Python……静态变量?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Instance variables vs. class variables in Python

这两种情况的区别是什么?在Python中是如何处理的?

例1

1
2
class MyClass:
     anArray = {}

Ex2

1
2
3
class MyClass:
     __init__(self):
          self.anArray = {}

看起来第一个例子中的数组被当作一个静态变量。Python是如何处理这个问题的,原因是什么?


在第一个示例中,anArray(在Python中称为dictionary,而不是数组)是一个类属性。可以使用MyClass.anArray访问它。只要定义了类,它就存在。

在第二个例子中,anArray是一个实例属性。可以使用MyClass().anArray访问它。(但是注意,这样做只会丢弃创建的MyClass实例;一个更合理的例子是mc = MyClass(); mc.anArray['a'] = 5。)在创建类的实例之前,它不存在。


它被宣布为不同的地区。Ex1类似于全局变量或静态变量。

1
2
3
obj = MyClass()
obj2 = MyClass()
print"IS one instance", id(obj.anArray) == id(obj2.anArray)

Ex2是本地属性。

1
2
3
obj = MyClass()
obj2 = MyClass()
print"IS one instance", id(obj.anArray) == id(obj2.anArray)