我想在每次设置 numpy 数组时对其内容进行检查。可以为此使用python属性吗?我的做法:
import numpy as np
class Obj():
def __init__(self):
self._np_arr = None
@property
def np_arr(self):
if self._np_arr is None:
self._np_arr = np.ones(10)
return self._np_arr
@np_arr.setter
def np_arr(self, value):
if np.sum(value)>10:
raise ValueError('Error message')
self._np_arr = value
if __name__ == '__main__':
o = Obj()
print o.np_arr
o.np_arr = np.zeros(10) # ok
o.np_arr = np.ones(10)*2 # not ok
print o.np_arr
当对象仍然是 None 时输入 getter。一旦 np_arr 是一个 numpy 数组,getter 和 setter 就不再起作用。
我究竟做错了什么?