考虑以下代码
class Foo:
i = 1 # initialization
def __init__(self):
self.i += 1
t = Foo()
print(t.i)
的初始化具体是什么时候我 发生? 之前 的执行初始化 方法或 后 它?
最佳答案
前。__init__
方法直到 Foo
才运行被实例化。 i=1
每当在代码中遇到类定义时运行
您可以通过添加打印语句来查看这一点:
print('Before Foo')
class Foo:
i = 1
print(f'Foo.i is now {i}')
def __init__(self):
print('Inside __init__')
self.i += 1
print(f'i is now {self.i}')
print('After Foo')
print('Before __init__')
foo = Foo()
print('After __init__')
打印:Before Foo
Foo.i is now 1
After Foo
Before __init__
Inside __init__
i is now 2
After __init__
但是请注意,您的
self.i += 1
不修改类属性Foo.i
.foo.i # This is 2
Foo.i # This is 1
关于python - 什么时候在 Python 中初始化静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983397/