Python 在appengine polymodel上覆盖设置项安全吗?
我正在为google app engine制作一个垃圾邮件过滤器库,它使用app engine挂钩在数据存储中Python 在appengine polymodel上覆盖设置项安全吗?,python,google-app-engine,magic-methods,polymodel,Python,Google App Engine,Magic Methods,Polymodel,我正在为google app engine制作一个垃圾邮件过滤器库,它使用app engine挂钩在数据存储中put()之前修改一些数据。为此,我创建了一个模型,将PolyModel类划分为子类,希望可检查的类应该划分为子类 但是对于类中的一些数据,我希望在值更改时执行一些操作,为此,我必须覆盖\uuuuu setitem\uuuu。但我相信sdk使用它来确定模型属性的更改、应用过滤器等,因此更改覆盖\uuuuuu setitem\uuuuuu可能会破坏这一点。解决这个问题的最佳方法是什么?如果
put()
之前修改一些数据。为此,我创建了一个模型,将PolyModel类划分为子类,希望可检查的类应该划分为子类
但是对于类中的一些数据,我希望在值更改时执行一些操作,为此,我必须覆盖
\uuuuu setitem\uuuu
。但我相信sdk使用它来确定模型属性的更改、应用过滤器等,因此更改覆盖\uuuuuu setitem\uuuuuu
可能会破坏这一点。解决这个问题的最佳方法是什么?如果您没有忘记使用super
调用父方法,那么重写方法是没有危险的。但在您的例子中,\uuuuuu setitem\uuuuuuuuuuu
是错误的位置,因为每次创建实例时,它都会从垃圾邮件中清除,即使它是从已清除的值创建的
如果你明确地这样做有什么不对
filter_out_spam(obj)
obj.put()
如果您没有忘记使用
super
调用父方法,那么重写方法是没有危险的。但在您的例子中,\uuuuuu setitem\uuuuuuuuuuu
是错误的位置,因为每次创建实例时,它都会从垃圾邮件中清除,即使它是从已清除的值创建的
如果你明确地这样做有什么不对
filter_out_spam(obj)
obj.put()
不要修改
\uuuuu setitem\uuuuuu
——而是编写一个满足您需要的
请记住,如果要在放置记录之前执行操作,您不能在模型上覆盖
put
,因为实体也可以与db.put
一起存储。如果可以,您应该通过将相关代码移动到属性类中来避免这种需要。不要修改\uuuuuu setitem\uuuuuu
-而是编写一个满足您需要的代码
请记住,如果要在放置记录之前执行操作,您不能在模型上覆盖
put
,因为实体也可以与db.put
一起存储。如果可以的话,应该通过将相关代码移动到属性类中来避免这种需要。我不是在覆盖put,而是在每次向dtabase发出请求时使用sdk调用的钩子。我检查动作是否“放”,然后对模型做我的动作。@FrederikCreems公平。我的建议是不要覆盖模型的\uuuu setitem\uuuuu
仍然适用。我没有覆盖put,我使用的是一个钩子,每当向数据数据库发出请求时,sdk都会调用该钩子。我检查动作是否“放”,然后对模型做我的动作。@FrederikCreems公平。我的建议是不要覆盖模型的\uuuuu setitem\uuuuu
仍然适用。显式模型确实可以工作,但我正在尝试使其自动化。把它看作是一种集中。如果用户想将此添加到他们的应用程序中,他们只需要编辑一段代码,而不是在所有put()调用中预先添加此代码。显式模型确实可以工作,但我正在尝试将其自动化。把它看作是一种集中。如果用户希望将此添加到他们的应用程序中,他们只需要编辑一段代码,而不是在所有put()调用之前添加此代码。