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如何解压缩.Z的文件啊,在windows系统环境下
Q7Z 是一款基于 Qt4 的 7z 压缩工具
http://code.google.com/p/k7z/
开源的
http://sourceforge.net/projects/k7z/
LS的能具体说一说吗?
......
像 C 的 scanf() 那样
比如读入 1 2 3 a b c
每次读入一个
下面这个应该是你想要的吧:
Python code:
>>> k = raw_input()
0 0123 ds dsl sd
>>> k
'0 0123 ds dsl sd'
>>> ......
大家好,我是一个新手,刚开始学python,但是刚开始的helloworld都没法打印,让我很无奈。
我的python安装路径为f:\python31。在path中也设置对了,在windows下运行是这样显示的,希望各位前辈指点一下。谢谢
Pyth ......