问题如何两类
之间共享数据有没有办法有两个类彼此同时继承?
背景
我目前工作的一个套接字服务器项目。在这个项目中,我有两个班,一个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