【发布时间】:2013-07-29 14:49:09
【问题描述】:
我在这里可能看起来很愚蠢。但是,我正在编写一些 python 代码,这件事让我印象深刻。在 python 中,有一些称为装饰器的东西,用@ 表示,并使用“环绕”函数,例如:
class PlotABC(metaclass=ABCMeta):
@property
def figure(self):
if self._figure is None: self.__create_figure()
return self._figure
@abstractmethod
def _prepare_series(self):
pass
我也知道一些设计模式,而且我知道有一些模式叫做装饰器。然后有一次我想,“嘿,也许名字相似并不是一个奇怪的巧合。”
我已阅读 wiki: Decorator pattern 和出色的答案 How to make a chain of function decorators?(几乎全部)。
在我看来,python 的装饰器语义真的很强大,可以用来实现设计模式。因为它们允许环绕函数和方法。尽管如此,我仍然感到困惑,因为我对设计模式缺乏经验。我也不知道有一种语言有这种专门的机制。
是否有 Python 和设计模式方面经验丰富的人可以说,如果有意创建 Python 语义来创建装饰器模式?是更多,更少,还是意味着不同?
也许可以说明声明抽象方法或属性是如何装饰它的?
【问题讨论】:
-
@Marcin 我发誓我试图搜索它,哈哈。我也将投票关闭我的副本。
标签: python design-patterns decorator