【问题标题】:Python Static Class attributes [duplicate]Python静态类属性[重复]
【发布时间】:2014-12-07 10:26:45
【问题描述】:

是否有可能在 Python 中创建一个类的静态属性,该属性对于该类的所有实例(对象)都是相同的,它们都将使用对该属性的相同引用而不创建自己的属性。

例如:

class myClass:
    __a = 0

    def __init__(self, b, c):
        self.b = b
        self.c = c

    def increase_A(self):
        self.__a += 1
        return

    def get_A(self):
        return self.__a

如果我有

myObject1 = myClass(1,2)
myObject2 = myClass(3,4)

myObject2.increase_A()

print myObject1.get_A()  

将显示 one 而不是 zero,因为它们共享相同的变量?

【问题讨论】:

  • 当你尝试它会发生什么?

标签: python


【解决方案1】:

要使您的代码按预期工作,请使用myClass.__a 而不是self.__a 来访问变量。

def increase_A(self):
    myClass.__a += 1
    return

def get_A(self):
    return myClass.__a

【讨论】:

    【解决方案2】:

    它们从同一个变量开始。但是,当你这样做时

    self.__a += 1
    

    这会将对象的__a 重新绑定到值为1 的新对象。

    它不会更改任何其他对象的__a,因此代码将打印出0。

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 2012-11-22
      • 2015-08-13
      • 2011-04-21
      • 2013-08-17
      • 2016-09-27
      • 2017-06-07
      • 1970-01-01
      相关资源
      最近更新 更多