python中的类中是不是有静态块
Posted
技术标签:
【中文标题】python中的类中是不是有静态块【英文标题】:Is there static block in class in pythonpython中的类中是否有静态块 【发布时间】:2011-12-14 08:41:57 【问题描述】:我对 python 比较陌生 我想为一个类只运行一次代码块。就像java中的静态块一样。
例如:
class ABC:
execute this once for a class.
python 中有没有这样的选项?
在java中我们是这样写的。这对一个类只执行一次,在加载类时。不是每个对象都创建
public class StaticExample
static
System.out.println("This is first static block");
谢谢
【问题讨论】:
您不想将您的代码放在__init__
函数中吗?
我猜没有。 init 在每个对象创建时被调用。我只需要它执行一次。
@root45:每个类的 instance 都会调用一次。 M S 要求每个班级调用一次的东西。
@Cpfohl 这就是我的想法,但我想我会澄清一下。
您是否尝试过您在问题中输入的内容?发生了什么?
【参考方案1】:
为此,只需将代码直接放在类定义下(与类的函数定义平行。
直接在类中的所有代码都会在类的命名空间中创建该类型时执行。示例:
class Test:
i = 3
y = 3 * i
def testF(self):
print Test.y
v = Test()
v.testF()
# >> 9
只是为您填写最后一点信息:您的方法函数def
s 也正在执行(就像在全局命名空间上定义函数时它们被“执行”一样),但它们没有叫。恰好执行def
没有明显可见的结果。
Python 的面向对象特性非常聪明,但您需要花点时间才能理解它!坚持下去,这是一种非常有趣的语言。
【讨论】:
请不要使用 self.y 访问静态变量/类变量。至少改用 Test.y 嗯,从来没有注意到我这样做了。固定。【参考方案2】:>>> class MyClass():
... print "static block was executed"
...
static block was executed
>>> obj = MyClass()
>>>
有关 Python 中的静态变量/函数的更多信息,请参见此处:Static class variables in Python
【讨论】:
以上是关于python中的类中是不是有静态块的主要内容,如果未能解决你的问题,请参考以下文章