在python django中,如何打印出对象的内省?

In python django how do you print out an object's introspection? The list of all public methods of that object (variable and/or functions)?

在python django中,如何打印出对象的透视图?该对象的所有公共方法的列表(变量和/或函数)?

例如。:

1
2
3
4
5
def Factotum(models.Model):
  id_ref = models.IntegerField()

  def calculateSeniorityFactor():
    return (1000 - id_ref) * 1000

我希望能够在django shell中运行命令行,告诉我django模型的所有公共方法。上面运行的输出将是:

1
2
3
>> introspect Factotoum
--> Variable: id_ref
--> Methods: calculateSeniorityFactor


好吧,你可以反省的事情很多,而不仅仅是一件。

首先要做的是:

1
2
3
>>> help(object)
>>> dir(object)
>>> object.__dict__

还可以查看标准库中的检查模块。

这将使99%的基础属于你。


使用检查:

1
2
3
4
5
6
7
8
9
10
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 shell中,没有括号就不能调用这个函数,您必须使用introspect(Factotum)(当然,在当前命名空间中导入了类Factotum属性),而不是introspect Factotum和空格。如果这让你非常恼火,你可能想看看伊普生。