Python, With ... as ... AST / Символ доступа - PullRequest
0 голосов
/ 17 августа 2010

Отказ от ответственности: Разумная семантика действительно диктует, что LHS, ведущий себя по-разному в зависимости от лексемы RHS, смешен. Но мне все же любопытно.

Привет, ребята,

Простой вопрос, но тот, на который кто-то может ответить лучше, чем мой хак. В настоящее время я работаю с метаклассами и т. Д. И вырабатываю удобный синтаксис для некоторых вещей.

Учитывая оператор Python with ... as ...:, могу ли я получить в менеджере контекста доступ к именам, указанным справа от as:

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

Может ли foo.__enter__() узнать лексему, где находится Dog?

Супер бонусный кредит: держите его вне зависимости от реализации, поддерживая также Python 3.x.

1 Ответ

1 голос
/ 17 августа 2010

Нет, точно так же как (скажем) в Dog = foo('fido') не существует "серьезного" способа, которым foo может узнать, что его результат должен быть привязан к имени Dog в вызывающей стороне. (Под "серьезным" я исключаю рыться в стеке, чтобы выяснить вызывающий байт-код и разобрать его, & c - в основном то, что вы знаете, вы никогда не сделаете, если бы знали, что ваш код будет поддерживаться хорошо мускулистый сопровождающий, который знает, где вы живете; -).

...