polymodel.PolyModel put()覆盖

时间:2011-03-25 14:07:32

标签: python google-app-engine

我需要在模型上覆盖put方法,因为我需要在存储实体时做一些特殊的事情。

代码看起来像这样:

class Asset(polymodel.PolyModel):
....

def put(self, rpc=None):
  # do something special
  return self


class Image(Asset):
...

现在我的问题是,如果我调用Asset.put()它调用自定义put方法,而Image.put()使用默认值。如果Asset将是db.Model,则按预期工作Image.put()将使用自定义put()。

如何让子类使用自定义函数? THX

1 个答案:

答案 0 :(得分:2)

虽然可以对你的类进行猴子修补以允许你改变put()的行为,但你可能最好还是编写一个方法 - 为了参数而调用save() - 包装put()以更明确和明显的方式使您不必担心子类会继承或不继承修补的行为。