2006年04月27日 星期四 21:40
第三句改成 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/
2006年04月27日 星期四 22:13
"造成列表的数据不断累积,"这个问题,仔细看手册中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
Zeuux © 2025
京ICP备05028076号