tôi đã cố gắng để xác định một lớp và ghi đè lên các nhà điều hành dấu ngã:Có khả năng ghi đè lên toán tử đơn nhất bằng toán tử nhị phân trong Python không?
class foo:
def __invert__(self, other)
return 1232 # a random number , just as test
Sau đó gọi nó thích:
>>> f = foo()
>>> g = foo()
>>> f ~ g
File "<input>", line 1
f ~ g
^
SyntaxError: invalid syntax
Chúng ta có thể thay thế các nhà điều hành dấu ngã với một nhị phân vì vậy chúng tôi có thể làm phẫu thuật như f ~ g
mà không gây ra lỗi cú pháp.
Không, không có. –
Không phải không sửa đổi chính Python, không (mặc dù bạn có thể làm như vậy nếu bạn muốn - xem ví dụ: http://stackoverflow.com/questions/214881/can-you-add-new-statements-to-pythons-syntax để giới thiệu). – jonrsharpe
@jonrsharpe: và thậm chí sau đó, số lượng toán hạng bằng cách thay đổi * tại thời gian chạy * như thế nào? Lựa chọn duy nhất của bạn là thay đổi toán tử '~' có nghĩa là hoàn toàn, bạn không thể chọn giữa 1 hoặc 2 toán hạng khi chạy. –