在python中是否有类中的静态块

M S*_*M S 14 python static block

我对python比较陌生我想为一个类只运行一次代码块.就像java中的静态块一样.

例如:

class ABC:
    execute this once for a class.
Run Code Online (Sandbox Code Playgroud)

python中有没有这样的选项?

在java中我们这样写.在加载类时,只对类执行一次.不是每个对象创建

public class StaticExample{
    static {
        System.out.println("This is first static block");
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Cri*_*ole 14

要做到这一点,只需将代码直接放在类定义下(与类的函数定义并行).

直接在类中的所有代码在类的命名空间中创建该类型时执行.例:

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

v = Test()
v.testF()
# >> 9
Run Code Online (Sandbox Code Playgroud)

只是为您填写最后一点信息:您的方法函数def也正在执行(就像它们在全局命名空间中定义一个函数时"执行"),但它们不会被调用.恰好是执行a def没有明显可见的结果.

Python的面向对象非常聪明,但需要一点时间才能理解它!坚持下去,这是一种非常有趣的语言.


nae*_*aeg 8

>>> class MyClass():
...     print "static block was executed"
... 
static block was executed
>>> obj = MyClass()
>>>
Run Code Online (Sandbox Code Playgroud)

有关Python中的静态变量/函数的更多信息,请参见此处:Python中的静态类变量