Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在appengine polymodel上覆盖设置项安全吗?_Python_Google App Engine_Magic Methods_Polymodel - Fatal编程技术网

Python 在appengine polymodel上覆盖设置项安全吗?

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可能会破坏这一点。解决这个问题的最佳方法是什么?如果

我正在为google app engine制作一个垃圾邮件过滤器库,它使用app engine挂钩在数据存储中
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()调用之前添加此代码。