用 C 扩展 Python 和 Zope
2008-09-30 13:06:49 来源:WEB开发网我们来小结一下这个短小、简单的 Product。它会把我们的 foo.bar 函数公开给脚本和 ZClass,并且还有一个作为“可添加的”对象的小接口,这就是全部内容。
清单 5. 一个简单的 Zope Product
import foo
class Foo(SimpleItem.Item):
"A Foo Product"
meta_type = 'foo'
def bar(self, string):
return foo.bar(string)
def __init__(self, id):
"Initialize an instance"
self.id = id
def index_html(self):
"Basic view of object"
return '
My id is %s and its length is %d.
' % (self.id, foo.bar(self.id))
def manage_addFoo(self, RESPONSE):
"Management handler to add an instance to a folder."
self._setObject('Foo_id', Foo('Foo_id'))
RESPONSE.redirect('index_html')
这只是一个最简单的 Product。不能绝对地说它是可能的 Product 中最小的一个,但已经很接近了。不过,它确实说明了 Product 的一些关键特征。首先,请注意“index_html”方法:它被调用来显示一个对象实例,这是通过构建 HTML 完成的。它实际上是一个页面。 manage_addFoo 方法是 Zope 对象管理的接口;我们在上面的 __init__.py 中引用了它。“__init__”方法初始化对象;实际上它 必须做的全部工作就是记录实例的唯一标识符。
这个微型的 Product 不和 Zope 安全性进行交互操作。它不做很多管理工作。它没有交互功能。所以您可以给它添加很多东西(甚至连很有用的功能它也没有)。我希望这对您是一个很好的开始。
以后该做什么
对 Zope Product 的简单介绍已经告诉您如何把 C 语言函数从 C 代码变为 Zope 中可用的。要学会怎么写 Product,您还得阅读更多文档(其中有很多仍在完善之中),坦率地说,还要研究已有的 Product,看看它们是怎么做的。Zope 模型有很强大的功能和很大的灵活性,它们都很值得探究。
我目前正在做集成 C 和 Zope 的大工程:集成我的工作流工具包(workflow toolkit)。在本文发表之前,我希望能看到它的雏形。它已被列在下面的参考资料中,去看看吧;到您阅读本文时,应该已经能够从中找到一个扩展示例。祝我好运。
更多精彩
赞助商链接