在Python中扩展(本机)类

run*_*eks 0 python class extend python-imaging-library

我正在尝试从Python Imaging Library向Image类添加一个新方法.我想要一个名为DilateImage的新类,它与原始的Image类完全相同,除了它还包含一个dilate()函数,该函数在一个实例上执行时修改它.这是我的示例代码(不起作用):

import Image

def DilateImage(Image):
   def dilate(self):
      imnew = self.copy()
      sourcepix = imnew.load()
      destpix = self.load()

      for y in range(self.size[1]):
         for x in range(self.size[0]):
            brightest = 255
            for dy in range(-1,2):
               for dx in range(-1,2):
                  try:
                     brightest = min(sourcepix[x+dx,y+dy], brightest)
                  except IndexError:
                     pass
            destpix[x, y] = brightest
Run Code Online (Sandbox Code Playgroud)

当我尝试使用这个新的类类型来创建一个使用基类"open"函数的实例时,它失败了:

>>> test = DilateImage.open("test.jpg")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'open'
Run Code Online (Sandbox Code Playgroud)

Wal*_*han 9

使用

class DilateImage(Image)
Run Code Online (Sandbox Code Playgroud)

def DilateImage(Image)
Run Code Online (Sandbox Code Playgroud)