我正在尝试使用Esper API注册用户定义函数。它需要一个类或字符串类型的争论
class MyUdf():
@staticmethod
def udf():
return 50
conf.addImport(myudf.getClass().getName())
错误消息
AttributeError: class MyUdf has no attribute 'getClass'
我可以通过
导入java类from java.lang import Math
conf.addImport(Math)
@larsmans: class 似乎只存在于Java Class类
中class MyUdf():
@staticmethod
def udf():
return 50
def main():
a = 'abc'
print a.__class__
u = MyUdf
print u.__class__
Traceback (most recent call last):
line 79, in main print u.__class__ AttributeError: class MyUdf has no attribute '__class__'
答案 0 :(得分:0)
我不认为这是可能的。 Jython类不是Java类,据我所知,没有纯粹的jython机制可以使用它。
一般来说,我会说您应该使用对象工厂方法mentioned in the Jython book,并与代理类结合使用,这是您作为参数传递的内容。
但是,该方法涉及编写大量Java,看起来在您的情况下,只需用Java编写MyUdf类就可以更简单了。
或者,您可以使用动态字节码生成做一些事情,但这是一个全新的兔子洞......