Tôi đang triển khai đối tượng giống như mảng có thể tương thích với các mảng tiêu chuẩn. Tôi chỉ cần nhấn một vấn đề gây phiền nhiễu mà thu hẹp xuống như sau:vấn đề ép buộc gumpy đối với nhà điều hành nhị phân bên trái
class MyArray(object):
def __rmul__(self, other):
return MyArray() # value not important for current purpose
from numpy import array
print array([1,2,3]) * MyArray()
Điều này mang lại kết quả như sau:
[<__main__.MyArray instance at 0x91903ec>
<__main__.MyArray instance at 0x919038c>
<__main__.MyArray instance at 0x919042c>]
Rõ ràng, thay vì gọi MyArray().__rmul__(array([1,2,3]))
như tôi đã hy vọng, __rmul__
được kêu gọi mỗi cá nhân phần tử của mảng, và kết quả được bọc trong một mảng đối tượng. Điều này dường như với tôi không phù hợp với python's coercion rules. Quan trọng hơn, nó làm cho phép nhân của tôi vô dụng.
Có ai biết cách này không?
(Tôi nghĩ một thể sửa chữa nó bằng cách sử __coerce__
nhưng tài liệu liên quan giải thích rằng đó là một trong không còn viện dẫn để đáp ứng với các nhà khai thác nhị phân ...)