Python 类中有静态块吗

23 投票
2 回答
9340 浏览
提问于 2025-04-17 04:55

我对Python还比较陌生。

我想让一段代码在一个类中只运行一次,就像Java中的静态代码块那样。

比如:

class ABC:
    execute this once for a class.

在Python中有没有类似的选项呢?

在Java中我们是这样写的。这个代码只会在类加载的时候执行一次,而不是每次创建对象的时候都执行。

public class StaticExample{
    static {
        System.out.println("This is first static block");
    }
}

谢谢!

2 个回答

13
>>> class MyClass():
...     print "static block was executed"
... 
static block was executed
>>> obj = MyClass()
>>>

想了解更多关于Python中静态变量和函数的信息,可以查看这里:Python中的静态类变量

26

要做到这一点,只需把代码直接放在类定义下面(和类的函数定义平行)。

在类里面的所有代码在创建这个类的对象时都会被执行。举个例子:

class Test:
    i = 3
    y = 3 * i
    def testF(self):
        print Test.y

v = Test()
v.testF()
# >> 9

再补充一点信息:你的方法函数 def 也是会被执行的(就像在全局命名空间定义函数时那样),但它们并没有被调用。执行一个 def 并不会有明显的结果。

Python 的面向对象特性很聪明,但需要一点时间才能理解!继续加油,这是一门非常有趣的语言。

撰写回答