próbowałem zdefiniować klasę i zastąpić tyldy operatora:Czy istnieje możliwość zastąpienia operatora unarnego binarnym w Pythonie?
class foo:
def __invert__(self, other)
return 1232 # a random number , just as test
Następnie nazywając ją lubię:
>>> f = foo()
>>> g = foo()
>>> f ~ g
File "<input>", line 1
f ~ g
^
SyntaxError: invalid syntax
możemy zastąpić operator tyldy z jednej binarnej więc możemy zrobić operację jak f ~ g
bez zgłaszania błędu składni.
Nie, nie ma. –
Nie bez modyfikowania samego Pythona, nie (chociaż możesz to zrobić, jeśli chcesz - zobacz np. Http://stackoverflow.com/questions/214881/can-you-add-new-statements-to-pythons-syntax dla wprowadzenia). – jonrsharpe
@jonrsharpe: a nawet wtedy, jak by liczba operandów zmienionych * w czasie wykonywania *? Jedyną opcją jest zmiana operatora '~', co oznacza, że nie możesz wybrać między 1 lub 2 operandami w czasie wykonywania. –