我对Python还相当陌生,目前我正在运行一些示例来理解事情是如何工作的,但是我被其中一个步骤卡住了。你知道吗
我有一个包含几个属性的类,还有一个__init__(self)
构造函数,类似这样:
class A:
# Some attributes here
a = None;
b = None;
...
def __init__(self):
# Do some stuff here
此外,我还有另一个类继承自2个类:上面的A
和SocketServer.BaseRequestHandler
(library)。你知道吗
class TCPHandler(A, SocketServer.BaseRequestHandler):
def handle(self):
# Do some other stuff here
基本上,这将在收到TCP请求后触发handle()
方法,但我的问题要简单得多。当我声明一个TCPHandler
对象时,我是这样做的:
server = SocketServer.TCPServer('localhost', 9191), TCPHandler)
server.serve_forever()
但是,这似乎试图用4个参数调用A
类的构造函数(我假设SocketServer.BaseRequestHandler
有):
TypeError: __init__() takes exactly 1 argument (4 given)
因此在A
中,我添加了另一个具有4个参数的构造函数:
def __init__(self, a=None, b=None, c=None, d=None):
# Do some other stuff here
现在这个构造函数似乎被触发了,但是RequestHandler.handle()
方法永远不会在到达的TCP连接上被调用。你知道吗
为什么在这种情况下handle()
方法从未被调用?你知道吗
----编辑---
这将是一个简短而完整的程序,可以说明我解释的行为:
import sys
import SocketServer
class A:
a = ''
b = ''
c = ''
def load_config(self):
a = 'a'
b = 'b'
c = 'c'
def __init__(self):
self.load_config()
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, debug=True):
self.load_config()
class TCPHandler(A, SocketServer.BaseRequestHandler):
def handle(self):
print "I reached handle()!!"
if __name__ == "__main__":
server = SocketServer.TCPServer(('localhost', 9999), TCPHandler)
server.serve_forever()
I reached handle()!!
消息永远不会显示(因此,handle()
不会被触发)。你知道吗
您的程序执行以下操作:
它应该这样做:
相关问题 更多 >
编程相关推荐