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é? :(
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 passerglobals=globals()
. Ne pas utiliser locals () comme argument de position, car il s'attribué à GLOBALS commerun(statement[, globals[, locals]])
prend comme premier argument globals. Donc, si le premier argument de position estlocals()
il sera confonduglobals
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