Недавно я читал о магических методах в Python, которые делают код намного легче читать. Можем ли мы определить наши собственные сопоставления? Если да, есть ли указатель на это и насколько он будет сложным?Добавить собственное сопоставление магических методов
Например, +
всегда отображается на __add__
. Могу ли я определить отображение для ?
, которое вызвало бы __is_valid__
в моем классе?
c = Car()
print(c?) # invokes __is_valid__ of Car to get the result
Вы действительно пытаетесь изменить синтаксис python. Вопросительный знак не имеет особого значения. Для этого вам нужно изменить токенизатор в python, синтаксический анализ (например, определить приоритет), и это слишком много работает только для синтаксического сахара. Почему бы не использовать стандартный путь: print (c.is_valid())? Создание нового оператора не избавит вас от необходимости выполнять этот метод. c.is_valid может читать все сразу, c? что-то новое. – lofcek
Или просто реализовать '@ property' и использовать' c.valid'. – jonrsharpe
@jonrsharpe: Я не думаю, что это действительно дубликат этого другого вопроса. Этот вопрос задает вопрос о добавлении утверждений, и ответы попадают в генерацию байт-кода и прочее. Этот вопрос задает вопрос о создании новых операторов и сопоставлении их с магическими методами, что является несколько более ограниченной формой синтаксического изменения. (Я не удивлюсь, если там где-то есть реальный дубликат.) – BrenBarn