python - tutorial - web applications with django




En Python Django, ¿cómo se imprime la introspección de un objeto? ¿La lista de todos los métodos públicos de ese objeto(variable y/o funciones)? (2)

Bueno, las cosas que se pueden hacer introspectivas son muchas, no solo una.

Las cosas buenas para empezar son:

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

También eche un vistazo al módulo de inspección en la biblioteca estándar.

Eso debería hacer que el 99% de todas las bases te pertenezcan.

En Python Django, ¿cómo se imprime la inrospección de un objeto? ¿La lista de todos los métodos públicos de ese objeto (variable y / o funciones)?

p.ej:

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

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

Quiero poder ejecutar una línea de comandos en el shell de Django para decirme todos los métodos públicos de un modelo de Django. La salida de correr arriba sería:

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

Uso 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

No hay forma de invocar esto sin paréntesis en un shell de Python normal, tendrá que usar introspect(Factotum) ((con la propiedad de clase Factotum importada en el espacio de nombres actual, por supuesto) y no introspect Factotum con un espacio. Si esto te molesta terriblemente, es posible que desees mirar IPython .





django