some.module.MyClassがJavaクラスであるとすると、Jython 2.1にインポートされた場合、その完全修飾クラス名は次のように取得できます。
from some.module import MyClass
print MyClass.__name__
次に、「some.module.MyClass」が出力されました。
現在、Jython2.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