使用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