假设 some.module.MyClass 是一个 Java 类,如果它是在 Jython 2.1 中导入的,它的全限定类名可以是这样的:
from some.module import MyClass
print MyClass.__name__
然后打印了“some.module.MyClass”。
现在,Jython 2.5 中的相同代码仅打印“MyClass”。
为了在 Jython 2.5 中获得完整的名称,我发现了以下内容:
print MyClass.name
它打印“some.module.MyClass”(我猜 java.lang.Class.getName() 被调用)。
问题是 MyClass 是否有 getName 方法。然后上述失败。
我找到的解决方案是致电
print MyClass.__module__ + "." + MyClass.__name__
但它更罗嗦。
如果有人知道更简单的方法(如原始的__name__),将受到欢迎。
注意:我已经知道完整的类名(实际上我已经导入了它)。我希望以这种方式检测更改,以防类被重命名或移动。例如:
className = "some.module.MyClass" # needs to be changed manually if MyClass is moved
反对
className = MyClass.name # no need to be changed if MyClass is moved