易截截图软件、单文件、免安装、纯绿色、仅160KB

python list中添加类对象的问题

在list中添加一个类的局部变量 这样做是否合法 请看下面例子:
Python code:

class A():
def __init__( self ):
self.__a = 0
self.__b = 'hello'

def get_a( self ):
return self.__a

def get_b( self ):
return self.__b

def set_a( self, m ):
self.__a = m

def set_b( self, n ):
self.__b = n

class B():
def __init__( self ):
self.__lista = []

def fun( self ):
a = A()
print id(a)
a.set_a(10)
a.set_b("word")
self.__lista.append( a ) #将这个添加到一个我的列表中 是否正确呢
a.set_a(5)
return self.__lista

if __name__ == "__main__":
b = B()
m = b.fun()
print m[0].get_a()



按里说 我觉得"a "既然是类B的局部实例化对象,那么我添加到lista中的应该是个局部实例化对象,函数fun结束后应该被自动销毁了.可是我在main中依然能够获得它的值. 难道这样做事正确的么?为什么 请各位指教
如果不对 那该怎么改呢 多谢
正确

这样为什么正确呢 局部变量我觉得函数结束的时候不是应该销毁了么..

它是有引用计数的,把值赋给了m,那么就增加了一次引用计数,所以得等你不用m之后才会销毁。

楼上正解 好多解释语言是这样的

声明类A和B的时候可以不要后面的括号

引用
声明类A和B的时候可以不要后面的括号
<


相关问答:

python 异常退出

最近用python写一个程序,总是异常退出,但是却没法用try..except来捕捉

由于没法发图片,所以把相关的信息打印出来
异常的信息大致如下:

python.exe遇到问题需要关闭。我们对此引起的不便表示抱歉 ......

ShareDevelop3.0建立Python项目运行时报错

之前我的电脑上安装了IronPython2.0,后安装ShareDevelop3.0,采用默认设置
我在ShareDevelop中建立了一个默认的Python的控制台或窗体项目,运行时报错如下:

调试器抛出异常System.IO.FileNotFoundException: ......

python怎么print 'hello world'

大家好,我是一个新手,刚开始学python,但是刚开始的helloworld都没法打印,让我很无奈。
我的python安装路径为f:\python31。在path中也设置对了,在windows下运行是这样显示的,希望各位前辈指点一下。谢谢
Pyth ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号