【发布时间】:2021-05-01 09:39:01
【问题描述】:
与函数相比,类的主体在定义时执行:
class A(object):
print 'hello'
输出:
hello
为什么会这样?和@classmethod/@staticmethod方法和类属性有关系吗?
【问题讨论】:
-
什么时候执行?
-
@JohnZwinck 我能理解他们的困惑。很直观,类主体只会在类的第一个实例实例化时执行(尽管情况并非如此)。
-
一个简单的答案 - 因为这是定义语言的方式..
-
问问自己:如果在加载模块时没有执行这个类,你怎么能使用它?
-
与某些语言不同,类是存在于内存中的第一类对象(没有双关语),而不是编译器以后如何创建对象的静态指令。类对象是通过执行
class语句创建的,它只是对type函数的调用的声明性包装(或任何可调用的被指定为元类,但您不必担心技术性) .
标签: python class python-internals