В Python нельзя создавать новые операторы, нет. Определив эти функции «magi c», вы можете повлиять на то, что происходит, когда объекты вашего собственного определения управляются с использованием стандартных операторов.
Однако список, на который вы ссылаетесь, не является полным. В Python 3.5 они добавили специальные методы для оператора @
. Вот довольно краткий список в документации модуля оператора Python и здесь - документы по перегрузке оператора .
operator.matmul(a, b)
operator.__matmul__(a, b)
Возврат a @ b
.
Новое в версии 3.5.
Я не видел этого оператора лично, поэтому немного поработал больше исследований. Он предназначен специально для умножения матриц . Но я смог использовать его для других целей, хотя я бы возражал против этого из соображений стиля:
In [1]: class RichGuyEmailAddress(str):
...: def __matmul__(self, domain_name):
...: return f'{self}@{domain_name}'
...:
In [2]: my_email = RichGuyEmailAddress('billg') @ 'microsoft.com'
In [3]: print(my_email)
billg@microsoft.com
Итак, нет, вы не можете перегрузить любой случайный символ, но вы можете перегрузить оператор @
.