問題如何兩類
之間共享數據有沒有辦法有兩個類彼此同時繼承?
背景
我目前工作的一個套接字服務器項目。在這個項目中,我有兩個班,一個Server
班,一個GUI
班。他們的目的是自我解釋。但是,我顯然需要讓兩個班級相互溝通。在程序中,我首先聲明Socket_Server
類,然後聲明GUI
類。
我問了一個類似的問題,How to Access Functions from Methods in Python,這從來沒有令人滿意的答案。請嘗試回答。
代碼和錯誤
在GUI
類,我有一個名爲self.message.
文本框,用來將消息發送給所有客戶端。我試圖通過使用此語法來繼承這個類:
class Socket_Server(GUI.messageFun):
接下來,GUI類從Socket_Server繼承 -
class GUI(Frame, Socket_Server):
第二產業GUI(Socket_Server)
工作正常,但第一個失敗。
按鈕的命令是這樣的
self.send = Button (self.messageFrame, text = "Send",
command = lambda: new_server.send_cmd())
new_server
是Socket_Server
類的一個實例。
當前的錯誤信息是這樣的:
Socket Created
Socket Bind Complete
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "D:\Python Programs\Sockets\IM Project\Server\Server GUI InDev Class.py", line 129, in <lambda>
command = lambda: new_server.send_cmd())
File "D:\Python Programs\Sockets\IM Project\Server\Server GUI InDev Class.py", line 82, in send_cmd
message = self.message.get("0.0",END)
AttributeError: Socket_Server instance has no attribute 'message'
**注意**:這可能不是最合適的標題 - 我不確定怎麼稱呼它。如果您有更好的主意,請隨時編輯它。如果您需要更多代碼,請評論。 – xxmbabanexx 2013-03-10 00:44:32
你似乎對如何面向對象編程和類層次結構感到困惑。例如,你不應該試圖讓'GUI'從'Socket_Server'繼承。這種繼承關係是說「GUI是套接字服務器的特例」,這是不正確的! GUI是GUI,服務器是服務器。我建議你在繼續下一步之前閱讀一些介紹性的OOP教程。 – 2013-03-10 00:53:45
@poorsod哈哈 - 我認爲沒有人會知道我是新的:)我已閱讀[這一個](http://www.sthurlow.com/python/lesson08/)和我的方式通過[開發Shed Tutorial on OOP](http://www.daniweb.com/software-development/python/code/216596/a-simple-class-inheritance-example-python)。我將我的[Python Book](http://www.amazon.com/Python-Programming-Absolute-Beginner-Edition/dp/1598631128)租給了我在學校的一位朋友 - 我很高興編程開始抓住上。無論如何,你有任何其他建議嗎? – xxmbabanexx 2013-03-10 00:59:32