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 . Mais je reçois Aucun .

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
Était-ce utile?

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 clause as 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

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