类和类实例化中的局部变量

大家好,
我刚开始使用Python.我曾经做一些Java编程,所以我是
不完全空白.
我有一个小问题,即如何在其他人中实例化
课程.我在此添加了测试程序的来源
邮件,其中包含每种实例化的测试类中的3种方法
同一类并将其绑定到局部变量.我的理解是
该方法后,本地变量立即收集垃圾
脱离范围.因此,我希望这些局部变量" CPU"
独立的方法并创建CPU类的不同实例.
不过,当我执行所有三种方法时,我得到了两个实例
相等,第三是不同的.
是否有一些使两个对象创建导致的圆形恒星
同一对象?
============================================== ===========输出
(测试)程序的输出是:
cpu class =
..cpu class =
..cpu class =
..
------------------------------------------------------------------------------------ ----------------------------
在0.001中进行了3次测试
好的
============================================== ============
测试程序的来源是:
导入系统
导入UNITSEST
从CPU导入CPU
cpuaddentries类(Unittest.testcase):
def testemptycpu(self):
"测试空CPU."
预期=" {}"
CPU = CPU(" CPU01")
打印" CPU类="+repr(CPU)
结果= cpu.showtimes()
self.sersertequals(预期,结果)
def testoneNtry(self):
"测试一个进入CPU"
时间=" 0000"
预期=" {'%s':('用户','system')}"%时间
CPU = CPU(" CPU02")
打印" CPU类="+repr(CPU)
cpu.addmetric(时间,"用户","系统")
结果= cpu.showtimes()
self.sersertequals(预期,结果)
def testDuper(self):
"测试插入重复条目."
全球例外
时间=" 0000"
预期=" {'%s':('用户','system')}"%时间
CPU = CPU(" CPU03")
打印" CPU类="+repr(CPU)
cpu.addmetric(时间,"用户","系统")
self.assertraises(例外,cpu.addmetric,时间," user1",
" System1")
如果__name__ ==" __ -main __":
UNITEST.MAIN()
- -
A.J. Bonnema,荷兰莱顿,
用户#328198(Linux计数器http://counter.li.org)

# 回答1


A.J. Bonnema写道:
CPU的两个实例在" 0 x ..."表示相同的情况下未打印
意味着它们是相同的对象,它们可能只是位于同一物体
位置在内存中.为了发生这种情况,它是必要的(但不是
足够),首先是垃圾收集的.
彼得
# 回答2


En Sun,2007年12月23日08:05:18 -0300,Peter Otten <__ *********@web.de>
escribió:
CPU的两个实例将相同的"在0x ..."表示相同

意味着它们是相同的对象,它们可能只是位于同一物体
位置在内存中.为了发生这种情况,它是必要的(但不是
足够),首先是垃圾收集的.
避免这种歧义的一种方法是确保所有三个对象都是
同时还活着;通过考试 ple,将它们插入某些全球列表. - - Gabriel Genellina

标签: python

添加新评论