Question

sur une coquille django i essayé

from django import forms
class A(forms.Form):
    x = forms.CharField()
ao = A()
import pdb 
pdb.run('ao.as_table') 

mais la dernière déclaration, après avoir frappé continuer pour la première fois que je reçois un stacktrace comme

/usr/lib/python2.6/pdb.pyc in run(statement, globals, locals)
   1218 
   1219 def run(statement, globals=None, locals=None):
-> 1220     Pdb().run(statement, globals, locals)
   1221 
   1222 def runeval(expression, globals=None, locals=None):

/usr/lib/python2.6/bdb.pyc in run(self, cmd, globals, locals)
    370             cmd = cmd+'\n'
    371         try:
--> 372             exec cmd in globals, locals
    373         except BdbQuit:
    374             pass

/usr/lib/pymodules/python2.6/IPython/FakeModule.pyc in <module>()

NameError: name 'ao' is not defined

ce qui a mal tourné? :(

Était-ce utile?

La solution

pdb.run ( 'imprimer ao.as_table ()', les habitants ())

passer essentiellement des habitants () dictionnaire

Autres conseils

Deux choses.

  • Tout d'abord, utiliser l'argument de l'instruction comme un appel. i.e. "ao.as_table()" avec () comme suffixe.
  • En second lieu, passer un argument mot-clé locals=locals() à la fonction. Vous pouvez également passer globals=globals(). Ne pas utiliser locals () comme argument de position, car il s'attribué à GLOBALS comme run(statement[, globals[, locals]]) prend comme premier argument globals. Donc, si le premier argument de position est locals() il sera confondu globals lors de l'exécution de votre code.

Il doit être

pdb.run ( 'imprimer ao.as_table ()' Locals = habitants ())

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top