Vì vậy, tôi có một lớp tùy chỉnh có chức năng __mul__
hoạt động với int. Tuy nhiên, trong chương trình của tôi (trong thư viện), nó được gọi theo cách khác, ví dụ: 2 * x
trong đó x
thuộc lớp của tôi. Có cách nào tôi có thể có nó sử dụng chức năng __mul__
của tôi cho điều này?Python: ghi đè phép nhân
17
A
Trả lời
23
Chỉ cần thêm dòng sau vào định nghĩa lớp và bạn sẽ được tốt để đi:
__rmul__ = __mul__
16
Thực hiện __rmul__
là tốt.
class Foo(object):
def __mul__(self, other):
print '__mul__'
return other
def __rmul__(self, other):
print '__rmul__'
return other
x = Foo()
2 * x # __rmul__
x * 2 # __mul__
Các vấn đề liên quan
- 1. Phép nhân trong Python
- 2. python ghi đè dòng trước
- 3. Chuỗi ghi đè Python __hash__
- 4. Ghi đè vùng tên trong Python
- 5. C++ Ghi đè ... ghi đè?
- 6. Ghi đè hoặc ghi đè
- 7. python: ghi đè lớp "là" hành vi
- 8. Ghi đè "+ =" bằng Python? (__iadd __() method)
- 9. Ghi đè toán tử 'boolean' trong python?
- 10. capybara poltergeist - ghi đè tác nhân người dùng
- 11. Cho phép thẻ cụ thể ghi đè tràn: ẩn
- 12. Ghi đè phương thức ghi đè (C#)
- 13. Sự khác biệt giữa ghi đè ảo, ghi đè, ghi đè mới và bị ghi
- 14. Django: ghi đè get_FOO_display()
- 15. django collectstatic ghi đè
- 16. Ghi đè log4j.properties
- 17. Một phép nhân ma trận 3D không gian trong python
- 18. Gọi chức năng ghi đè từ chức năng ghi đè
- 19. Ghi đè đối tượng ghi đè với các liên kết
- 20. Ghi đè đăng ký ghi đè Tạo Phương thức
- 21. Tại sao ghi đè == phải ghi đè bằng?
- 22. Ghi đè lên phong bì xà phòng trong Suds python
- 23. Giá trị ghi đè của Python không cần thiết lập
- 24. Python thay thế và ghi đè lên thay vì phụ
- 25. ghi đè phương thức đệ quy trong python
- 26. Làm cách nào để ghi đè nhập bằng Python?
- 27. Làm cách nào để ghi đè ngắt bàn phím? (Python)
- 28. Ghi đè kích hoạt JavaScript
- 29. Ghi đè nguồn Tile MapView?
- 30. ghi đè khi chạy __setattr__
Lưu ý rằng điều này không phải lúc nào cũng như những gì bạn muốn. Giả sử bạn có các lớp vector và ma trận, và bạn muốn xác định phép nhân giữa chúng bằng cách xử lý vectơ như ma trận 1xN. Phép nhân ma trận không giao hoán, vì vậy bạn cần phải chuyển đổi thứ tự các đối số. –