Sto provando a chiamare una funzione. Uno dei parametri è una variabile con attributi (che conosco a causa dell'eccezione AttributeError che ho ottenuto). Non conosco gli attributi esatti che questa variabile dovrebbe avere, quindi mi chiedevo se potevo vedere alcuni dettagli aggiuntivi sull'eccezione, ad esempio, quale attributo non poteva trovare. Grazie.C'è qualche modo per ottenere dettagli specifici su un'eccezione AttributeError in Python?
risposta
AttributeError
identifica in genere l'attributo mancante. es .:
class Foo:
def __init__(self):
self.a = 1
f = Foo()
print(f.a)
print(f.b)
Quando eseguo che, vedo:
$ python foo.py
1
Traceback (most recent call last):
File "foo.py", line 10, in <module>
print(f.b)
AttributeError: Foo instance has no attribute 'b'
che è abbastanza esplicito. Se non vedi qualcosa del genere, per favore pubblica l'errore esatto che stai vedendo.
EDIT
Se è necessario forzare la stampa di una deroga (per qualsiasi motivo), si può fare questo:
import traceback
try:
# call function that gets AttributeError
except AttributeError:
traceback.print_exc()
Che dovrebbe darvi il messaggio di errore completo e traceback associato con l'eccezione.
Non ricevo un traceback, mi è stato appena detto che c'era un'eccezione.Ho dovuto usare try tranne per scoprire che si trattava di un AttributeError. – Chuy
Bene, la risposta alla tua domanda è: "Sì, ci * è * un modo per dire quale attributo è mancante. È proprio lì nel messaggio" AttributeError'. " Quindi * ora * devi ottenere il traceback completo e il messaggio per l'eccezione. Stampa l'eccezione nella tua clausola 'except'. –
Ecco cosa ho fatto: stampare "Errore imprevisto:", sys.exc_info() [0] – Chuy
solito AttributeError
trasporta alcune informazioni su questo con esso:
#!/usr/bin/env python
class SomeClass(object):
pass
if __name__ == '__main__':
sc = SomeClass()
print sc.fail
# Traceback (most recent call last):
# File "4572362.py", line 8, in <module>
# print sc.fail
# AttributeError: 'SomeClass' object has no attribute 'fail'
Purtroppo non c'è traccia. – Chuy
@ user559495: "Non c'è traccia". Cosa c'è, esattamente? –
Il traceback dovrebbe avvisare l'utente l'accesso attributo che ha sollevato l'eccezione AttributeError
:
>>> f.b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Foo instance has no attribute 'b'
In alternativa, convertire il Exception
-str
:
>>> try:
... f.b
... except AttributeError, e:
... print e
...
Foo instance has no attribute 'b'
Se si desidera ottenere un elenco degli attributi disponibili per un oggetto, provare dir()
o help()
>>> dir(f)
['__doc__', '__init__', '__module__', 'a']
>>> help(str)
Help on class str in module __builtin__:
class str(basestring)
| str(object) -> string
|
| Return a nice string representation of the object.
| If the argument is a string, the return value is the same object.
|
| Method resolution order:
| str
| basestring
| object
|
| Methods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
|
[...]
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
si può anche chiamare help()
su dir
(il motivo per cui viene lasciato come esercizio per il lettore):
In mancanza di questi ... si potrebbe sempre guardare il codice, a meno che non sia stato fornito un modulo precompilato da una terza parte, nel qual caso è necessario richiedere una documentazione migliore (ad esempio alcuni test unitari!) Dal proprio fornitore !
- 1. Python AttributeError su __del__
- 2. Ottenere dettagli di eccezione in Python
- 3. Posso in qualche modo "compilare" uno script Python per funzionare su PC senza Python installato?
- 4. Ottenere ulteriori dettagli in Ember.js
- 5. Python LDAP AttributeError
- 6. C'è qualche modo in XQuery per ottenere l'ora corrente in millisecondi da qualche Epoch?
- 7. Conosci qualche modo creativo per interfacciare Python con Tcl?
- 8. python dict dettagli di implementazione
- 9. Griglia Kendo - Come ottenere i dettagli della riga su RowSelected?
- 10. Qualche modo per indovinare il tipo mime su Delphi XE2?
- 11. ottenere attributo dinamico in python
- 12. Ottenere numeri specifici dalla stringa
- 13. eseguire un'operazione a intervalli specifici in python
- 14. come risolvere un "AttributeError: __exit__" in multiproccesing in Python?
- 15. C'è un modo per ottenere suggerimenti sul codice per gtk3 e python su aptana?
- 16. Python BeautifulSoup Estrai URL specifici
- 17. Flag specifici del compilatore per file specifici in Xcode
- 18. Leggi dettagli certificato SSL su WP8
- 19. Rails - qualche modo elegante per gestire 404s?
- 20. Qualche modo per migliorare questa espressione regolare?
- 21. OpenCV per Python - AttributeError: 'modulo' oggetto non ha attributo 'connectedComponents'
- 22. C'è un modo per configurare .gitignores specifici per remoto?
- 23. Python AttributeError: L'oggetto non ha attributo
- 24. C'è qualche plugin/modo per gestire più progetti in Vim?
- 25. Come ottenere i dettagli del cliente da ordine in WooCommerce?
- 26. Ottenere identificativi specifici da Indexeddb
- 27. riga di percorso dell'indice non in preparazione per i dettagli per la divulgazione dei dettagli
- 28. Come implementare livelli diversi per moduli specifici in Python
- 29. Un modo per rimuovere cookie specifici da HttpRequestHeaders in WebApi
- 30. Come ottenere i dettagli dell'evento nel middleware per socket.io
Dovrebbe indicare quale codice ha causato l'errore di attributo nel traceback. Puoi anche guardare la fonte per la funzione che stai chiamando. –
Non ho l'origine per la funzione, motivo per cui questo è un problema. – Chuy
È piuttosto difficile chiamare una funzione in Python a cui non si ha l'origine; è un'estensione C? Solo un file .pyc? –