我是zope的新手,之前我在Django工作了大约2.5年.因此,当我第一次跳入Zope(第2版)时(仅因为我的新公司7年来一直使用它),我遇到了这些问题.请帮助我理解它们.
zodb的"真正"目的是什么?我知道它做了什么,但告诉我zodb做的一件好事和像Django(没有zodb)这样的框架未命中.
更新:根据答案,Zodb取代了对ORM的需求.您可以直接将对象存储在db(zodb本身)中.
据说,zope的杀手功能之一是TTW(通过网络或使用ZMI开发)的理念.但我(和任何开发人员)更喜欢基于文件系统的开发(使用Version控件,使用Eclipse,使用Zope之外的任何喜欢的工具).那TTW实际上在哪里使用?
这是一个很大的问题.与Python/Django继承相比,Zope的Acquistion获得了什么"EXTRA Stuff".
来自Django的Zope真的是一个很好的举动吗?
任何网站如djangosnippets.org for Zope(v2)?
假设我有一个这样的类:
#include <iostream>
using namespace std;
class Boda {
private:
char *ptr;
public:
Boda() {
ptr = new char [20];
}
~Boda() {
cout << "calling ~Boda\n";
delete [] ptr;
}
void ouch() {
throw 99;
}
};
void bad() {
Boda b;
b.ouch();
}
int main() {
bad();
}
Run Code Online (Sandbox Code Playgroud)
似乎析构函数~Boda永远不会被调用,因此ptr资源永远不会被释放.
这是程序的输出:
terminate called after throwing an instance of 'int'
Aborted
Run Code Online (Sandbox Code Playgroud)
所以似乎我的问题的答案是No.
但是当我抛出一个异常时,我认为堆栈被解开了?为什么没有Boda b对象在我的例子中被破坏?
请帮我理解这个资源问题.我想在将来写出更好的程序.
这也就是所谓的RAII?
谢谢,Boda Cydo.