目前,我有一些抽象的模型类,它们具有其他具体模型的共同行为.例如,抽象的SearchableModel.class可能会被其他具体模型继承.
使用Objectify时,我想注释SearchableModel类,因为它需要持久化它自己的字段.但是,我对进行任何类型的多态查询都不感兴趣,我不想在数据存储区中使用任何类型的"SearchableModel"实体,只需要继承自SearchableModel的具体类.我应该如何处理@ Entity/@ EntitySubClass注释?
如果我使用@Entity注释抽象类和具体类,并且持久化/加载具体类的实例,它是否会按预期工作?
我知道我可以自己测试一下,但是,我还没有设置客观化.我仍在试图弄清楚它如何与我当前的模型一起使用.
关于如何组织这种依赖性的任何其他建议也受到赞赏.
谢谢.
在下面的示例中,我将类放置Foo在它自己的 module 中foo。
为什么外部类被 ref 转储?该实例ff没有与其源代码一起转储。
我正在使用 Python 3.4.3 和 dill-0.2.4。
import dill
import foo
class Foo:
y = 1
def bar( self, x ):
return x + y
f = Foo()
ff = foo.Foo()
print( dill.dumps( f, byref=False, recurse=True ) )
print( '\n' )
print( dill.dumps( ff, byref=False, recurse=True ) )
Run Code Online (Sandbox Code Playgroud)
好吧,上面的代码实际上是错误的(应该是Foo.y,而不是y)。更正代码在转储f实例时给了我一个异常。
我有一个与Morpheus提出的问题非常相似的问题,在下面的问题中:
Richard Corden提出的解决方案要求用户明确指定函数参数类型,以区分它们的重载.但是,此解决方案似乎不适用于具有相同类型的不同数量的参数的重载.
考虑这个例子(源自原始问题):
template <typename T>
class A
{
public:
template<class Arg1>
void connect(void (T::*f)(Arg1))
{
//Do some stuff
}
template<class Arg1, class Arg2>
void connect(void (T::*f)(Arg1,Arg2))
{
//Do some stuff
}
void connect(void (T::*f)())
{
//Do some stuff
}
};
class GApp
{
public:
void foo() {}
void foo(double d) {}
void foo(double d1, double d2) {}
};
int main ()
{
A<GApp> a;
a.connect (&GApp::foo); // foo () - OK
a.connect<double> (&GApp::foo); // foo …Run Code Online (Sandbox Code Playgroud)