`Obiettivo dichiarazione with` del pitone è inaspettatamente None
-
27-10-2019 - |
Domanda
Sembra che io non capisco qualcosa con la dichiarazione --- pitone with
.
Si consideri questa classe:
class test(object):
def __enter__(self): pass
def __exit__(self, *ignored): pass
Ora, quando lo si utilizza con with
, come in
with test() as michael:
print repr(michael)
mi sarei aspettato un po 'di output come
qualcosa che non va? Tutti i suggerimenti sarebbero utili.
(sto usando Python 2.6.6.)
Modifica
Grazie a
ephement per me che punta alla documentazione. Il metodo __enter__
dovrebbe leggere
def __enter__(self): return self
Soluzione
with
documentazione:
Se un obiettivo è stato incluso nella dichiarazione
with
, il valore restituito da__enter__()
viene assegnato ad esso.
Se si def __enter__(self): return self
, allora il vostro risultato previsto è prodotto.
Altri suggerimenti
object.__enter__(self)
Inserisci il contesto di esecuzione relative a questo oggetto. La dichiarazione
with
legherà valore di ritorno di questo metodo per (s) specificati nella clausolaas
della dichiarazione del bersaglio, se presenti.
ho la stessa cosa per repr(michael)
Prova questo, invece:
m.__repr__()
Non sono del tutto sicuro, ma penso che abbia qualcosa a che fare con il fatto che non è stato definito il metodo repr
nella classe test