在Python Django中如何打印对象的内省?该对象的所有公共方法列表(变量和/或函数)?
在Python的Django框架中,如何打印出一个对象的内部信息?也就是列出这个对象(变量和/或函数)所有公开的方法?
比如:
def Factotum(models.Model): id_ref = models.IntegerField() def calculateSeniorityFactor(): return (1000 - id_ref) * 1000
我想在Django的命令行中运行一个指令,告诉我一个Django模型的所有公开方法。运行上面的指令后,输出的结果会是:
>> introspect Factotoum --> Variable: id_ref --> Methods: calculateSeniorityFactor
2 个回答
6
使用 inspect 模块:
import inspect
def introspect(something):
methods = inspect.getmembers(something, inspect.ismethod)
others = inspect.getmembers(something, lambda x: not inspect.ismethod(x))
print 'Variable:', # ?! what a WEIRD heading you want -- ah well, w/ever
for name, _ in others: print name,
print
print 'Methods:',
for name, _ in methods: print name,
print
在普通的 Python 终端中,你不能不加括号直接调用这个功能,你需要使用 introspect(Factotum)
(当然,前提是你已经在当前环境中导入了类 Factotum
)。而不是像这样 introspect Factotum
,中间有空格。如果这样让你感到很烦,你可以考虑使用 IPython。
51
其实你可以检查的东西有很多,不止一个。
可以从以下几个方面入手:
>>> help(object)
>>> dir(object)
>>> object.__dict__
另外,看看标准库里的inspect模块也很不错。
这样你就能掌握99%的基础知识了。