2010-08-17 34 views
0

Avertissement: Une sémantique sensée dicte que le LHS de se comporter différemment selon le lexème RHS est ridicule. Mais je suis curieux.Python, Avec ... comme ... Accès AST/Symbol

Salut les gars,

question simple, mais qui Somone peut être en mesure de répondre à mieux que mon hack. Je suis actuellement en train de jouer avec des métaclasses etc et de travailler sur une syntaxe confortable pour certaines choses.

Compte tenu de la déclaration Python with ... as ...:, puis-je accéder au gestionnaire de contexte quel nom (s) sont données sur le droit de as:

with foo('fido') as Dog: 
    ... 

peut foo.__enter__() trouver le lexème où Dog est?

Crédit de bonus super: Gardez-le agnostique d'implémentation, supportant Python 3.x aussi.

Répondre

1

Non, tout comme (disons) dans Dog = foo('fido') il n'y a pas de manière "sérieuse" dans laquelle foo peut savoir que son résultat est sur le point d'être lié au nom Dog dans l'appelant. (Par "sérieux" j'exclus fouiller dans la pile pour trouver le bytecode appelant et le désassembler, & c - fondamentalement les choses que vous savez que vous ne feriez jamais si vous saviez que votre code allait être maintenu par un mainteneur bien musclé qui sait où vous vivez ;-).

+0

+1 Vrai. Merci pour votre réponse. Je sais que le code sensible ne devrait pas prendre en compte le lexème aussi;) –