【发布时间】:2012-02-04 14:49:24
【问题描述】:
理想情况下,我想扩展 PIL 图像类的一个实例以包含一些自定义方法;然而,图像不支持这一点,所以我需要改变策略。委派似乎是最传统的替代方案,但在我偶然发现 python 的这一方面之前,我曾玩弄过创建我的自定义类的想法,该类具有充当 PIL Image 类实例的属性。我在其他任何地方都没有看到过这种做法,但这与委托本质上是一样的吗?
import Image
MyImageClass():
def __init__(self, filepath):
self.attrA = ...
self.attrB = ...
self.attrc = ...
self.img = Image.open(filepath)
def method_A(self):
...
def method_B(self):
im = MyImageClass('/path/to/png')
im.self.img.thumbnail((100,100))
【问题讨论】:
-
这是非常基本的 OO 编程 - 查找“has-a”关系以获取存储在属性中的对象示例。 (另外,我很确定
im.self.img应该是im.img- 我在第一个版本中得到一个 AttributeError)
标签: python subclass delegation