Согласно Фредрику Лунду , автору PIL:
класс Image не предназначен для подкласса кода приложения.если вам нужно пользовательское поведение, используйте делегирующую оболочку.
myOriginal.py :
Чтобы делегировать отдельные методы:
class ExtendedImage(object):
def __init__(self,img):
self._img=img
def method1(self):
return self._img.method1() #<-- ExtendedImage delegates to self._img
def method3(self):
...
Или для делегирования (почти) всего на self._img
вы можете использовать __getattr__
:
class ExtendedImage(object):
def __init__(self,img):
self._img=img
def __getattr__(self,key):
if key == '_img':
# http://nedbatchelder.com/blog/201010/surprising_getattr_recursion.html
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()