使用WSGIApplication实例记录debug
参数作为self.__debug
的价值:双下划线是强迹象表明,在类外没有代码本身应该是看这个属性,因为它被认为是一个内部应用程序细节并且可以随时改变(即使在API的小修改中)。如果你想忽略这个非常强烈的迹象,你可以可以,从技术上讲,使用webapp.WSGIApplication.active_instance._WSGIApplication__debug
来看看它,但它是一个真正糟糕的主意。
一个多更好的主意是继承WSGIApplication
在自己的代码,使属性公开可见:
class MyWSGIapp(webapp.WSGIApplication):
def __init__(self, url_mapping, debug=False):
self.debugmode = debug
webapp.WSGIApplication.__init__(self, url_mapping, debug)
现在,当您使用MyWSGIapp
而不是webapp.WSGIApplication
开始做事了,webapp.WSGIApplication.active_instance.debugmode
成为clean,solid从应用程序中的任何其他位置访问感兴趣的属性的方法。
所以,我打破了通过子类封装......这不是像直接读取值的危险那样危险吗? – 2010-06-27 18:27:51
这个建议并没有破坏封装,也没有危险 - 你可以依靠'debugmode'来控制代码(不像试图直接访问WSGIApplication的'__debug'字段)。 – 2010-06-27 19:04:42
@Rosarch,我很困惑 - 你从哪里读过或以其他方式“学习”子类化破坏封装?子类化在OOP中是一个基本的东西,我提出的子类甚至不会窥探基类的_any_属性,它只是“动态地”捕获“__init__”参数的副本 - 它怎么可能* *完全可以**“封装破坏”?请说明你的担心。 – 2010-06-27 20:43:28