给出一个类
class MyClass:
text = "hello"
number = 123
在python中是否有办法检查MyClass,确定它有两个属性text
和number
。我不能使用inspect.getSource(object)
这样的东西,因为我要获取它的属性是使用SWIG生成的(因此它们隐藏在.so :)中。
所以我真的在寻找与Java [Class.getDeclardFields][1]
任何帮助都将不胜感激,否则我将不得不用SWIG + JAVA而不是SWIG + Python来解决这个问题。
答案 0 :(得分:8)
我通常只使用dir(MyClass)
。也适用于实例化对象。
修改强> 我应该提一下这是一个简写函数,用于确定我的对象是否正确创建。如果您以编程方式执行此操作,则可能需要更仔细地查看反射API。
它也可能不适用于链接库。
答案 1 :(得分:0)
请写出实际的可执行代码段;不要指望人们回答您的问题,先修复您的代码。
class MyClass(object):
text = "hello"
number = 123
for a in dir(MyClass):
print a
答案 2 :(得分:0)
>>> import cmath
>>> dir(cmath)
['__doc__', '__file__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'isinf', 'isnan', 'log', 'log10', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
>>> cmath.atan
<built-in function atan>
是dir
能够和
open("/usr/lib/python2.6/lib-dynload/cmath.so", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\17\0\0004\0\0\0"..., 512) = 512
fstat64(4, {st_mode=S_IFREG|0644, st_size=32176, ...}) = 0
mmap2(NULL, 43824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x268000
mmap2(0x26f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x6) = 0x26f000
mmap2(0x271000, 6960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x271000
close(4)
是动态加载的