__call 进行多维数组赋值
时间: 2023-05-30 22:04:12 浏览: 116
__call 方法是用来在对象被调用时执行的特殊方法。它通常用于实现对象的函数式调用形式。然而,它并不能直接用于多维数组的赋值操作。
如果要在对象中实现多维数组的赋值操作,可以使用 __set 方法。例如:
```python
class MultiArray:
def __init__(self, *shape):
self.shape = shape
self.data = [0] * (reduce(lambda x, y: x * y, shape))
def __setitem__(self, index, value):
if len(index) != len(self.shape):
raise ValueError("Invalid index")
flat_index = sum(i * reduce(lambda x, y: x * y, self.shape[k + 1:], 1) for k, i in enumerate(index))
self.data[flat_index] = value
```
这个类实现了一个多维数组,可以通过 __setitem__ 方法实现赋值操作。例如:
```python
a = MultiArray(2, 3)
a[0, 0] = 1
a[1, 2] = 2
```
这样就可以实现多维数组的赋值操作了。
阅读全文