我创建了以下示例来理解 python 中的实例
import time;
class test:
mytime = time.time();
def __init__(self):
#self.mytime = time.time();
time.sleep(1);
pass
from test import test
test1 = test()
test2 = test()
print test1.mytime
print test2.mytime
test1.mytime = 12
print test1.mytime
print test2.mytime
在这种情况下,输出 ID 如下:
1347876794.72
1347876794.72
12
1347876794.72
我预计 test2.mytime 比 test1.mytime 大 1 秒。为什么不在每个实例中创建一个关于 mytime 的副本?
请您参考如下方法:
让我们看看这些行:
class test:
mytime = time.time();
这里设置了类成员值,在类定义执行时计算一次,所以time.time()在包含的模块时计算一次加载类测试。
class test 的每个实例都将收到该预先计算的值,您必须覆盖该值(例如在 __init__ 方法中),通过 self 访问它(这是一个特殊的存储对实例的引用的参数),从而设置实例成员值。
