2010-10-27 3 views
0

Я знаю, что для изменения поведения операторов по умолчанию в python вы можете переопределить некоторые методы по умолчанию, такие как __add__ или __sub__ для + и -, но не нашли ничего, чтобы переопределить поведение and и or ключевые слова, в то время как некоторые для побитовых операторов &, |: соответственно __and__ и __or__.Переопределение поведения по умолчанию для операторов python

Знаете ли вы, есть ли крючки для этих ключевых слов? Я знаю, что странно переопределять поведение по умолчанию & or, но мне нужно это, чтобы построить абстрактное синтаксическое дерево, начинающееся с формулы python во время выполнения, на самом деле не хочет изменять свою семантику странным образом.

Если нет, я хотел бы изменить язык, чтобы иметь эту поддержку. Если есть хороший эксперт, который мог бы предложить мне правильный способ сделать это, пожалуйста, положите руки вверх, иначе я думаю, что я попрошу Guido для этого :)

Спасибо большое floks!

ответ

2

is, and и or не могут быть перегружены. Используйте Python language services, если вы хотите написать Pythonesque DSL.

+0

Спасибо, вы сделали точку. Однако я думаю, что мне нужно будет изменить python напрямую, чтобы поддержать это. Это доказательство концепции абстрактных методов интерпретации, поэтому мне нужно сделать это так, как я сказал, потому что мне нужно решить во время выполнения путь, который следует использовать из существующего кода, используя эти крючки. – hoheinzollern

+0

Вам не нужно изменять Python для этого, а именно: Ren'Py. –

+0

Я не понимаю, они делали это уже в своем двигателе? – hoheinzollern