import numpy as np class Ch: def __setstate__(self, state): self.__dict__.update(state) @property def r(self): if "x" in self.__dict__: return self.__dict__["x"] return np.asarray(self) def __array__(self, dtype=None): array = np.asarray(self.r) if dtype is not None: array = array.astype(dtype) return array @property def shape(self): return np.asarray(self).shape @property def ndim(self): return np.asarray(self).ndim def __len__(self): return len(np.asarray(self)) def __getitem__(self, item): return np.asarray(self)[item] def reshape(self, *shape): return np.asarray(self).reshape(*shape)