python 如何在类的外部增加成员函数?

lufy_king 2010-11-20 10:18:32
python 如何在类的外部增加成员函数?

比如,我定义了一个类:
class A:
pass

它的成员函数,都是在其它模块中,动态增加的,我应该怎么写呢?
...全文
861 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2010-11-21
  • 打赏
  • 举报
回复
嗯,如上暴力式全名称强势修改。封装式的做法在类先弄个接口/方法拓展参考:
http://stackoverflow.com/questions/962962/python-changing-methods-and-attributes-at-runtime
I_NBFA 2010-11-21
  • 打赏
  • 举报
回复

class A: pass;

def method(self):
print("dynamic method");

A.method = method;
a = A();
a.method();

lufy_king 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 iambic 的回复:]

“它的成员函数,都是在其它模块中,动态增加的,我应该怎么写呢?”
建议你别滥用Python的动态能力。为什么你的成员方法非要“全部”放在别的模块里?
[/Quote]
一个比较BT的应用场景 :) 一言难尽.多谢~!
angel_su 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 i_nbfa 的回复:]

引用 4 楼 angel_su 的回复:
嗯,如上暴力式全名称强势修改。封装式的做法在类先弄个接口/方法拓展参考:
http://stackoverflow.com/questions/962962/python-changing-methods-and-attributes-at-runtime

真"封"的上嘛?只是类定义而已原来一块定现在分开定,谁会封"类定义",
根本谈不上封不……
[/Quote]
只是觉得用类那就考虑继承,不然用类里提供的方法,其他在python里即使能做到但不觉得有啥意思...
iambic 2010-11-21
  • 打赏
  • 举报
回复
“它的成员函数,都是在其它模块中,动态增加的,我应该怎么写呢?”
建议你别滥用Python的动态能力。为什么你的成员方法非要“全部”放在别的模块里?
I_NBFA 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 angel_su 的回复:]
嗯,如上暴力式全名称强势修改。封装式的做法在类先弄个接口/方法拓展参考:
http://stackoverflow.com/questions/962962/python-changing-methods-and-attributes-at-runtime
[/Quote]
真"封"的上嘛?只是类定义而已原来一块定现在分开定,谁会封"类定义",
根本谈不上封不封吧否则类定义本身就是"暴力"的。
再说MethodType只是跟某个实例对象绑定,类本身不受影响,除非就是这种需求我也认为这是它的唯一用处,
否则定义一个实例绑一次太傻了。
最后内哥们太搞了竟然types.MethodType(func, cls),self变成类等于增加classmethod- -!
当然3个参数行不过很遗憾py3已经把它咔嚓了, 咔嚓的好这种乱七八糟写法就该咔嚓大快人心,鄙人愚见。
  • 打赏
  • 举报
回复
不清楚
是否是要用类的继承

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧