В 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
Ответы
Ответ 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.