Python论坛  - 讨论区

标题:[python-chinese] Re: [python-cn:9170] 遇到个有点奇怪的问题,和对象有关

2006年04月27日 星期四 21:40

tocer tocer.deng at gmail.com
Thu Apr 27 21:40:55 HKT 2006

第三句改成 self.handlers = handlers[:] 就可以了。
原来的第三句传递的实际是个指针,造成列表的数据不断累积
yi huang 写道:
> class EventHandler(object):
>     def __init__(self,handlers = []):
>         self.handlers = handlers
>     def __call__(self,*args,**kw):
>         for h in self.handlers:
>             h(*args,**kw)
>     def __add__(self,func):
>         self.handlers.append(func)
>         return self
> 
> if __name__=='__main__':
>     def temp():
>         print 'hello'
>     e = EventHandler()
>     e += temp
>     e += temp
>     a = EventHandler()
>     a += temp
>     print len(e.handlers)  #  这里输出来竟然是3 !!
> 
> 也许是对 += 处理得不对, 不知道如果重载 += 运算符, 找半天也只找到 __add__
> 
> -- 
> http://codeplayer.blogbus.com/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年04月27日 星期四 22:13

ygao ygao2004 at gmail.com
Thu Apr 27 22:13:25 HKT 2006

"造成列表的数据不断累积,"这个问题,仔细看手册中Python Tutorial部分。


On 4/27/06, tocer <tocer.deng at gmail.com> wrote:

> 第三句改成 self.handlers = handlers[:] 就可以了。
> 原来的第三句传递的实际是个指针,造成列表的数据不断累积
> yi huang 写道:
> > class EventHandler(object):
> >     def __init__(self,handlers = []):
> >         self.handlers = handlers
> >     def __call__(self,*args,**kw):
> >         for h in self.handlers:
> >             h(*args,**kw)
> >     def __add__(self,func):
> >         self.handlers.append(func)
> >         return self
> >
> > if __name__=='__main__':
> >     def temp():
> >         print 'hello'
> >     e = EventHandler()
> >     e += temp
> >     e += temp
> >     a = EventHandler()
> >     a += temp
> >     print len(e.handlers)  #  这里输出来竟然是3 !!
> >
> > 也许是对 += 处理得不对, 不知道如果重载 += 运算符, 找半天也只找到 __add__
> >
> > --
> > http://codeplayer.blogbus.com/
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



--
※※※※※※※※※※※※※※※※※※※※※※※※
My blog:  http://blog.donews.com/ygao
Forum    http://groups.google.com/group/python_study
※※※※※※※※※※※※※※※※※※※※※※※※
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060427/3e908302/attachment-0001.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号