python list中添加类对象的问题

power0811 2009-11-30 10:49:07
在list中添加一个类的局部变量 这样做是否合法 请看下面例子:

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中依然能够获得它的值. 难道这样做事正确的么?为什么 请各位指教
如果不对 那该怎么改呢 多谢
...全文
985 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DDGG 2010-02-10
  • 打赏
  • 举报
回复
引用 7 楼 power0811 的回复:
弱弱问下

5楼及楼主的写法都是不被推荐的.

应该尽可能的使用新式类, 去继承.

该怎么写才好呢


就是说应该继承object,这是新式类的写法。从而支持super()访问基类。

class A(object):
...
lizhiyu_kingsoft 2010-02-09
  • 打赏
  • 举报
回复
是整个程序运行完,你的对象才会在内存销毁。执行完不会销毁。
jiangkun_08 2009-12-21
  • 打赏
  • 举报
回复
学习中
青山*锦城 2009-12-16
  • 打赏
  • 举报
回复
新手,学习,
power0811 2009-12-16
  • 打赏
  • 举报
回复
类是不是都应该这样写 主要为了数据封装 呵呵
power0811 2009-12-15
  • 打赏
  • 举报
回复
弱弱问下

5楼及楼主的写法都是不被推荐的.

应该尽可能的使用新式类, 去继承.

该怎么写才好呢
lovetysx 2009-12-15
  • 打赏
  • 举报
回复
为什么要写那么多set 和get呢?这样效率很慢的说
goosman 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bladesoft 的回复:]
声明类A和B的时候可以不要后面的括号
[/Quote]
5楼及楼主的写法都是不被推荐的.

应该尽可能的使用新式类, 去继承.
bladesoft 2009-12-09
  • 打赏
  • 举报
回复
声明类A和B的时候可以不要后面的括号
thy38 2009-12-01
  • 打赏
  • 举报
回复
它是有引用计数的,把值赋给了m,那么就增加了一次引用计数,所以得等你不用m之后才会销毁。
power0811 2009-12-01
  • 打赏
  • 举报
回复
这样为什么正确呢 局部变量我觉得函数结束的时候不是应该销毁了么..
guolihui112 2009-12-01
  • 打赏
  • 举报
回复
正确
guolihui112 2009-12-01
  • 打赏
  • 举报
回复
楼上正解 好多解释语言是这样的

37,742

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧