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

Mik*_*keN 17 python django

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

例如:

def Factotum(models.Model):
  id_ref = models.IntegerField()

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

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

>> introspect Factotoum
--> Variable: id_ref
--> Methods: calculateSeniorityFactor

Len*_*bro 42

那么,你可以反省的东西很多,而不仅仅是一个.

好的开始是:

>>> help(object)
>>> dir(object)
>>> object.__dict__
Run Code Online (Sandbox Code Playgroud)

另请参阅标准库中的inspect模块.

这应该使所有基地的99%属于你.


Ale*_*lli 6

使用检查:

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
Run Code Online (Sandbox Code Playgroud)

在普通的Python shell中,没有办法在没有括号的情况下调用它,你必须使用introspect(Factotum)((Factotum当然在当前命名空间中导入类属性))而不是 introspect Factotum空格.如果这让你非常烦恼,你可能想看看IPython.