2012-07-06 13 views
1

我正在創建一個簡單的啓動/停止HTTP服務器Python應用程序的方法,而且我現在有下面的類設置:OOP:致電類處理程序創建對象

#The Tkinter interface for the application 
class Application(): 
    def __init__(self,win): 
     self.serverThread=ServerThread() 

     self.output=Tkinter.Text(win) 
     self.output.pack() 


#The Server Thread 
class ServerThread(): 
    class ServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
     def log_message(msg): 
      //here's where I'm confused 
    def __init__(self): 
     self.server=BaseHTTPServer.HTTPServer(('',8000),self.ServerHandler) 

什麼是正確的如何在不使用全局輸出變量的情況下從ServerHandler類的應用程序的輸出字段添加文本? ServerHandler是否還有對創建它的ServerThread對象的引用?

編輯:我想我真正在尋找的是這樣的:我如何讓ServerHandler作爲一個類傳遞給BaseHTTPServer.HTTPServer--知道不使用全局變量創建的ServerThread和Application對象?

+0

目前還不清楚'ServerThread'類是如何工作的。 'self'不會在類聲明中定義。你的意思是把它放在'__init__'方法中嗎? – 2012-07-07 00:28:57

+0

我做過了,在我的代碼中有這種方式,只是刪除了太多的問題。我有代碼工作與文本字段的全局輸出引用,但我寧願不必這樣做,如果有某種方式我可以將引用傳遞給ServerThread對象或應用程序對象的處理程序。 – 2012-07-07 01:11:00

回答

0

如果您正在尋找測井設施,我建議您查看標準logging模塊。實際上,它可以爲您提供儘可能多的「全局」日誌輸出。它也顯然具有標準化的優點:這使得日誌代碼更清晰易辨,因爲許多人使用這種方法。