python - 什么时候在 Python 中初始化静态变量?

标签 python python-3.x oop

考虑以下代码

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/

相关文章:

python - 验证 Nginx 正在提供静态文件而不是 Flask

python - Pandas read_csv() 损失数字精度

python - Google Drive API 下载文件 - python - 没有下载文件

php - 根据其他对象值的总和自动更新 PHP 对象值

javascript - 在 JavaScript 原型(prototype)函数中保留对 "this"的引用

python - 在函数中使用颜色条

Python 3.3.3 : TypeError: list indices must be integers, 不 float

python - 根据用户输入检查列表中的重复项

sockets - 如何在python中解析捕获的数据包?

javascript - 如何在 JavaScript 上访问 "this"的父级?