【问题标题】:Python... Static variables? [duplicate]Python ...静态变量? [复制]
【发布时间】:2012-05-10 17:24:31
【问题描述】:

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

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

Ex1

class MyClass:
     anArray = {}

Ex2

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

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

【问题讨论】:

标签: python


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    它被宣布为不同的区域。 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)
    

    【讨论】:

    • 我认为类属性和实例属性是更合适的术语。
    • 我不确定你想用这些代码显示什么,因为它们完全相同..
    • 对于任何想知道的人,第一个打印语句将返回 True,第二个将返回 False
    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多