2010-08-17 4 views
0

Отказ от ответственности: разумная семантика действительно диктует, что LHS как поведение по-разному в зависимости от лексики RHS нелепо. Но мне любопытно.Python, With ... as ... AST/Symbol access

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

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

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

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

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

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

ответ

1

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

+0

+1 Правда. Спасибо за ваш ответ. Я знаю, что разумный код не должен учитывать и лексему;) –

Смежные вопросы