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的时候可以不要后面的括号
<
相关问答:
各位高手,哪位能写个简单的通讯录,只保存姓名和手机号,能保存到硬盘并可读回,有添加,删除,修改,查询功能,命令行式的就行
这种活你得自己干,有问题可以问,但不会有人帮你做的。
给你源码
http://dow ......
python和pyqt以及Eric4都已经配置好了,打开Eric4写个python程序比如简单的
print“hello,world”,怎么编译运行了,Start菜单的所有命令都出现和图中差不多的对话框,应当怎么运行了?
求大家指教
没有人用 ......
s='aaa111aaa,bbb222,333ccc,444ddd444,555eee666,fff777ggg'
用正则表达式取出 前后字母相同的数据 结果如下:
111 ddd
谢谢~
Python code:
import re
s='aaa111aaa,bbb222,333ccc,444ddd444,555eee666,ff ......