Python ......静态变量?

时间:2012-05-01 04:02:56

标签: python

  

可能重复:
  Instance variables vs. class variables in Python

这两种情况之间有什么区别?如何在Python中处理它?<​​/ p>

练习1

class MyClass:
     anArray = {}

练习2

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

在第一个例子中,似乎数组被视为静态变量。 Python如何处理这个问题,原因是什么?

2 个答案:

答案 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)