【发布时间】:2015-03-27 23:30:57
【问题描述】:
还有其他类似的stackoverflow questions,但不是特定于我需要覆盖函数的问题。
我想将以下 Java 代码转换成 Python:
import Someclass;
Someclass obj = new Someclass("stringarg") {
@Override
void do(x) {
// Do extra stuff on function
super.do(x);
}
}
我需要为此显式创建一个虚拟类吗?可以像这样的 Java 代码这样在单个语句中将其转换为 Python 吗?
使用:Python 2.7.6、Java 1.8
附:这将在 Jython 中完成,其中 Someclass 是一个导入的 Java 库。
任何帮助将不胜感激。谢谢。
UDPATE:
- 对于和我有同样问题但导入类是抽象类的人:
感谢 DNA 的 link,我设法通过在他的方法中添加一个超级语句来使其工作,如下所示:
def patch(self, x):
# do something
print 'goodbye'
super(Someclass, self).do(x)
obj = type('DummySomeclass', (Someclass, object), {"do": patch})("hello")
-
对于那些导入类不是抽象的,DNA 和 algrebe 的代码已经可以工作,但也只是添加了缺少的 super:
... super(Someclass, self).do(x)
【问题讨论】: