据我所知,类属性在某种意义上可以用作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
给出:
12
13
当然我希望
12
12
答案 0 :(得分:4)
使用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
self.foo = ...
创建一个新的实例属性。仅当没有实例属性self.foo
时,阅读foo
才会访问类属性,否则它将访问实例变量foo
。
答案 1 :(得分:0)
而不是self
,请参阅类本身:
def __init__(self,arg_foo):
if not A.foo_set_flag:
A.foo=arg_foo
A.foo_set_flag=True
或者,你甚至不需要标志来实现这个目标:
>>> class A():
foo = None
def __init__(self, arg_foo):
if A.foo is not None:
A.foo = arg_foo
>>> a = A(10)
>>> b = A(20)
>>> print(a.foo)
10
>>> print(b.foo)
10