Python 类中有静态块吗
我对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 的面向对象特性很聪明,但需要一点时间才能理解!继续加油,这是一门非常有趣的语言。