Подтвердить что ты не робот

В 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
4b9b3361

Ответ 1

Ну, вещи, которые вы можете понять, - это много, а не только один.

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

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

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

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

Ответ 2

Используйте 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 свойство, импортированное в текущее пространство имен)) и not introspect Factotum с пробелом. Если это вас раздражает, вы можете посмотреть IPython.