假設some.module.MyClass是一個Java類,如果在Jython的2.1原裝進口,其完全限定類名可以這樣得到:完全限定類名Jython中
from some.module import MyClass
print MyClass.__name__
然後「一些。 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
[在python中獲取對象的完全限定類名]可能的重複(http://stackoverflow.com/questions/2020014/get-fully-qualified-class-name-of-an-object-in-python ) – katrielalex
@katrielalex不是一個重複的東西 - 可能會有一種總是有效的JVM-y方法,因爲'MyClass.name'有時會起作用,並且他們也接受了這個問題的答案。羅嗦了。 – agf
@agf:夠公平的;理想情況下,OP可以編輯以清楚地表明他們正在尋找一種特定於JVM的方法,並且他們知道上一個問題。 – katrielalex