2005年12月15日 星期四 17:23
class A:pass a=A() b=A() def p(self):print 'first' A.p=p a.p() first b.p() first 这都没问题,哪有没有办法只是更新一个对象的函数呢? 不如让 a.p()输出: first b.p() 输出: second -----邮件原件----- 发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 limodou 发送时间: 2005年12月15日 17:05 收件人: python-chinese at lists.python.cn 主题: 垃圾邮件:Re: [python-chinese] 如何替换对象的方法? 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
2005年12月15日 星期四 18:11
On 12/15/05, Du Jun <jdu at haiercct.com.cn> wrote: > 哪有没有办法只是更新一个对象的函数呢? > 不如让 > a.p()输出: > first > b.p() 输出: > second def p1(): print 'first' def p2(): print 'second' a.p = p1 b.p = p2 -- Qiangning Hong http://hongqn.hn.org Registered Linux User #396996
Zeuux © 2025
京ICP备05028076号