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的时候可以不要后面的括号
<
相关问答:
最近用python写一个程序,总是异常退出,但是却没法用try..except来捕捉
由于没法发图片,所以把相关的信息打印出来
异常的信息大致如下:
python.exe遇到问题需要关闭。我们对此引起的不便表示抱歉 ......
之前我的电脑上安装了IronPython2.0,后安装ShareDevelop3.0,采用默认设置
我在ShareDevelop中建立了一个默认的Python的控制台或窗体项目,运行时报错如下:
调试器抛出异常System.IO.FileNotFoundException: ......
大家好,我是一个新手,刚开始学python,但是刚开始的helloworld都没法打印,让我很无奈。
我的python安装路径为f:\python31。在path中也设置对了,在windows下运行是这样显示的,希望各位前辈指点一下。谢谢
Pyth ......