В Python Django, как вы распечатываете самоанализ объекта? Список всех открытых методов этого объекта (переменные и / или функции)? - PullRequest
16 голосов
/ 29 января 2010

В 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 ]

40 голосов
/ 29 января 2010

Ну, вещей, которые вы можете исследовать, много, а не только одно.

Хорошие вещи для начала:

>>> help(object)
>>> dir(object)
>>> object.__dict__

Также взгляните на модуль проверки в стандартной библиотеке.

Это должно сделать 99% всех баз принадлежащих вам.

6 голосов
/ 30 января 2010

Использование проверка :

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...