如何使用 __init__() 初始化类变量?

Cup*_*tor 3 python oop class

据我了解,类属性在某种意义上可以用作 Python 的静态变量。我有一个类,我想在第一次运行期间设置这个静态变量__init__(),即在创建第一个对象时并保持这样。不是每次都更新。我应该怎么做?即使设置标志也无济于事。

class A():
    foo=None
    foo_set_flag=False
    def __init__(self,arg_foo):
        if not self.foo_set_flag:
            self.foo=arg_foo
            foo_set_flag=True
a=A(12)
b=A(13)
print a.foo
print b.foo
Run Code Online (Sandbox Code Playgroud)

这使:

12
13
Run Code Online (Sandbox Code Playgroud)

当然我期待

12
12
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 6

使用ClassName.attribute_name访问类属性:

class A:
    foo = None
    foo_set_flag = False

    def __init__(self, arg_foo):
        if not A.foo_set_flag:
            A.foo = arg_foo
            A.foo_set_flag = True

a=A(12)
b=A(13)
print a.foo # -> 12
print b.foo # -> 12
Run Code Online (Sandbox Code Playgroud)

self.foo = ...创建一个新的实例属性。self.foo只有当没有实例属性时foo,读才会访问类属性,否则访问实例变量foo

  • @RamchandraApte 再说一次,如果该类已被子类化,则您将修改子类,而不是您正在编写的类。 (2认同)