意外的类行为

你好,谁能解释下面的代码sniplet的行为:——-schnipp < - - - - - -阶级基础(对象):def __init__(自我,lst = []):自我.varlist = lstdef addVar(自我,var):self.varlist.append (var)类派生(基础):def __init__(自我,var):Base.__init__(自我)self.addVar (var)var = ("foo"、"酒吧")ivar在var:obj =派生(ivar)打印ivar, obj.varlist obj——schnapp < - - - - - -在运行(Python 2.5.1),我得到以下输出:< __main__ foo.派生的对象在0 xb7c608cc ("foo")酒吧< __main__.派生的对象在0 xb7c6092c ("foo"、"酒吧")所以,我得到两个不同的物体,但如何"foo"进入第二个varlist吗?我有点糊涂了,什么好主意吗?谢谢提前1月

# 回答1

简·谢弗写道:它* *被解释在本教程中,语言参考,FAQ,是的,它可以解释;-)有关更多信息,请参见这个页面:http://effbot.org/zone/default-values.htm< / F >
# 回答2

9月7日,40分,弗雷德里克·Lundh <弗雷德……@pythonware.comwrote:它* *被解释在本教程中,语言参考,FAQ,是的,它可以解释;-)有关更多信息,请参见这个页面:http://effbot.org/zone/default-values.htm< / F >好了,你可以更换最后一行:打印ivar, obj, obj.varlist, id (obj.varlist)有另一个行为,你可以更换3第一行:阶级基础(对象):def __init__(自我,lst = None):如果没有:lst lst = []自我.varlist = lst享受Python !

标签: python

添加新评论