2005年12月15日 星期四 16:39
Class test: A=10 Fun(slef): Print ‘hello 1!’ Tt=test() Test.a 10 test.fun() hello 1! 如上,如果我想把对象tt中的a属性更新,只要 tt.a=20 就可以了,那如果我想替换掉tt中的fun函数改怎么做呢? ===================== Du Jun R&D; Center Pegasus Telecom (Qing Dao) Co,.Ltd Haier Group TEl:86-532-8939618-563 FAX:86-532-8939597 Email: jdu at haiercct.com.cn ====================== -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051215/9d7e586f/attachment-0001.html
2005年12月15日 星期四 16:45
在 05-12-15,Du Jun<jdu at haiercct.com.cn> 写道: > > Class test: > A=10 > Fun(slef): > Print 'hello 1!' > > Tt=test() > Test.a > 10 > test.fun() > hello 1! > > 如上,如果我想把对象tt中的a属性更新,只要 > > tt.a=20 > > 就可以了,那如果我想替换掉tt中的fun函数改怎么做呢? > 按类的方法定义一样定义一个函数,如: def p(self): print 'p' 然后使用setattr(),如: setattr(test, 'Fun', p) 在NewEdit中的Mixin就是这样呀。记得你问过的呀。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
2005年12月15日 星期四 16:58
limodou wrote: >按类的方法定义一样定义一个函数,如: > >def p(self): > print 'p' > >然后使用setattr(),如: >setattr(test, 'Fun', p) > > 直接用test.Fun = p不就行了吗?用setattr有什么特别的原因吗? 还有,这种方法只能对之后生成的实例有效,对test类已经存在的实例没有作用。
2005年12月15日 星期四 17:05
2005/12/15, Hong Yuan <hongyuan at homemaster.cn>: > limodou wrote: > > >按类的方法定义一样定义一个函数,如: > > > >def p(self): > > print 'p' > > > >然后使用setattr(),如: > >setattr(test, 'Fun', p) > > > > > 直接用test.Fun = p不就行了吗?用setattr有什么特别的原因吗? 应该是可以,一时没想起来。用setattr()习惯了。 > > 还有,这种方法只能对之后生成的实例有效,对test类已经存在的实例没有作用。 我试了一下,可以呀。 >>> class A:pass >>> a = A() >>> a.p() Traceback (most recent call last): File "", line 1, in ? AttributeError: A instance has no attribute 'p' >>> A.p = p Traceback (most recent call last): File "", line 1, in ? NameError: name 'p' is not defined >>> def p(self):print 'p' >>> A.p = p >>> a.p() p -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
Zeuux © 2025
京ICP备05028076号