According to Fredrik Lund , author of PIL:
The image class is not intended to be subclassed by application code. if you want individual behavior, use wrapper delegation.
myOriginal.py
Delegate individual methods:
class ExtendedImage(object):
def __init__(self,img):
self._img=img
def method1(self):
return self._img.method1()
def method3(self):
...
Or delegate (almost) everything to self._img, you can use __getattr__:
class ExtendedImage(object):
def __init__(self,img):
self._img=img
def __getattr__(self,key):
if key == '_img':
raise AttributeError()
return getattr(self._img,key)
def method3(self):
print('Hiya!')
test.py:
import Image
import myOriginal
im = myOriginal.ExtendedImage(Image.open("picture.jpg"))
im.method3()
source
share