更改 Python 中的静态 class 变量

Changing static class variables in Python

如何更改 class 的静态变量?我希望通过某种输入来改变它。

class MyClass: 

    var1 = 1
    var2 = 4

    def __init__(self, var3, var4):
        self.var3 = var3
        self.var4 = var4

我想要改变的是var1 og var2,或者想知道如何改变。

如果要更改 class 变量,可以将它们分配给 __init__ 范围内的变量:

class MyClass: 
  var1 = 1
  var2 = 4
  def __init__(self, var3, var4):
    self.var1 = var3
    self.var2 = var4

c = MyClass(100, 200)
>>>c.var1, c.var2

输出:

(100, 200)

这取决于您何时需要重新绑定 class 属性。您也可以稍后在创建对象时这样做:

mc = MyClass(1, 2)
mc.var1 = 20
mc.var2 = 40

在 class 正文中创建或更改的属性与通过分配给属性在外部创建的属性没有区别。

class Whatever():
    b = 5
    def __init__(self):
        Whatever.b = 9999

boo = Whatever()
print(boo.b) # prints 9999

boo.b = 500
print(boo.b) # prints 500

Whatever.b = 400
print(boo.b) # prints 500

# since its a static var you can always access it through class name
# Whatever.b