我在一些包下有2个java类Foo和FooBar。这两个类都实现了接口FooIFC。我想从python(Jython)脚本中找到接口的实例是否为Foo或FooBar类型。
我在IFC的一个基类(实现者)中有一个静态getinstance()
from package import FooIFC
from package import Foo
if FooIFC.getinstance() instanceof Foo:
print "Foo"
else:
print "FooBar"
我也尝试了isintance(FooIFC.getinstance(),Foo)。这样会找不到错误名称。
instanceof期待结肠错误。
如何从python脚本中找到对象类型?
由于
答案 0 :(得分:1)
python中没有instanceof
运算符,而是isinstance
(即isin s tance)内置函数。因此:
from package import FooIFC
from package import Foo
if isinstance(FooIFC.getinstance(), Foo):
print "Foo"
else:
print "FooBar"
答案 1 :(得分:0)
在Jython
中,您也可以尝试。
from package import FooIFC
from package import Foo
if FooIFC.getClass().getSimpleName() == 'Foo':
print "Foo"
else:
print "FooBar"
示例代码:
import java.util.ArrayList as ArrayList
arr = ArrayList()
arr.add(10)
arr.add(20)
print arr
print "Name:", arr.getClass().getName()
print "Simple Name:", arr.getClass().getSimpleName()
if arr.getClass().getName() == 'java.util.ArrayList':
print "This is an ArrayList"
if arr.getClass().getSimpleName() == 'ArrayList':
print "This is an ArrayList"
输出:
> jython check_type.py
[10, 20]
Name: java.util.ArrayList
Simple Name: ArrayList
This is an ArrayList
This is an ArrayList