PythonLibrary Python 2019年 1月 17日
ここまで書いた段階で MonoImagePixelIterator と MonoImageBlockIterator でほぼ同じ表記であることを示した. すなわち多くの部分が共通に記述できることになる.そこで,共通部分を MonoImageIterator として親クラスに吸い出すことにした.
class MonoImageIterator:
def __init__(self, mono_image):
self._mono_image = mono_image
self._width = mono_image.width
self._height = mono_image.height
self._f = self.vector_iterator_func if mono_image.ndim == 1 else self.matrix_iterator_func
self._getter = self.vector_getter_func if mono_image.ndim == 1 else self.matrix_getter_func
self._setter = self.vector_setter_func if mono_image.ndim == 1 else self.matrix_setter_func
@property
def value(self):
return self._getter()
@value.setter
def value(self, v):
self._setter(v)
def __iter__(self):
return self._f()
class MonoImagePixelIterator(MonoImageIterator):
def __init__(self, mono_image):
super().__init__(mono_image)
class MonoImageBlockIterator(MonoImageIterator):
def __init__(self, mono_image, br, bc, sr, sc, is_small_ok):
super().__init__(mono_image)
self._br = br
self._bc = bc
self._sr = sr
self._sc = sc
self._is_small_ok = is_small_ok
短いがきりがいいので今日はここまで.