`Objectif de déclaration de with` est de façon inattendue Aucun python
-
27-10-2019 - |
Question
semble que je ne comprends pas quelque chose avec --- la déclaration de with
python.
Considérez cette classe:
class test(object):
def __enter__(self): pass
def __exit__(self, *ignored): pass
maintenant, lorsque vous l'utilisez avec with
, comme dans
with test() as michael:
print repr(michael)
J'attendre à une sortie comme
Quelque chose ne va pas ici? Toute suggestion aider.
(J'utilise Python 2.6.6.)
EDIT:
Merci à
ephement pour moi pointant la documentation. La méthode __enter__
doit lire
def __enter__(self): return self
La solution
De la documentation with
:
Si une cible a été inclus dans la déclaration de
with
, la valeur de retour de__enter__()
est attribué.
Si vous def __enter__(self): return self
, votre résultat attendu est produit.
Autres conseils
De les docs :
object.__enter__(self)
Entrez le contexte d'exécution lié à cet objet. L'instruction
with
se liera la valeur de retour de cette méthode à la cible (s) spécifiés dans la clauseas
de l'instruction, le cas échéant.
je reçois la même chose pour repr(michael)
Essayez ceci:
m.__repr__()
Je ne suis pas tout à fait sûr, mais je pense qu'il a quelque chose à voir avec le fait que vous n'avez pas défini la méthode repr
dans votre classe test