다음 상황이 있습니다. BaseHTTPServer.py 파일의 BaseHTTPRequestHandler에서 send_error 메소드를 덮어 쓰려고합니다. BaseHTTPServer.py는 send_error 메소드와 관련된 구조를 가지고 있습니다 :클래스 외부의 파이썬 모듈에서 액세스 기능
def _quote_html(html):
blah
blah
class HTTPServer():
blah
blah
class BaseHTTPRequestHandler():
blah
blah
def send_error(self):
blah
blah
content = (self.error_message_format %
{'code': code, 'message': _quote_html(message), 'explain': explain})
여기서 send_error 메소드 _quote_html 함수가 호출됩니다. 그것은 BaseHTTPServer.py 파일 내에서 작동하지만 내 자신의 HttpHandler를 작성하는 경우, BaseHTTPRequestHandler에서 상속 SEND_ERROR을 BaseHTTPRequestHandler 클래스의 외부 BaseHTTPServer.py 파일에있는 _quote_html 기능에 액세스 할 수 없습니다 내 기능 SEND_ERROR 덮어 쓰기를 시도 :
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/python_codes/Junior/Level1/C&C/HttpServer/HttpHandler.py", line 12, in __init__
BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/python_codes/Junior/Level1/C&C/HttpServer/HttpHandler.py", line 26, in handle_one_request
if not self.parse_request():
File "/usr/lib/python2.7/BaseHTTPServer.py", line 286, in parse_request
self.send_error(400, "Bad request syntax (%r)" % requestline)
File "/python_codes/Junior/Level1/C&C/HttpServer/HttpHandler.py", line 106, in send_error
{'code': code, 'message': _quote_html(message), 'explain': explain})
NameError: global name '_quote_html' is not defined
그래서 내 질문은 어떻게 모듈 파일에서 부모 클래스 외부의 함수에 액세스 할 수 있습니까? 필자의 경우 send_error()에서 _quote_html(). Everythong는 BaseHTTPServer.py에서 수입 :
from BaseHTTPServer import *
당신은 어떻게'BaseHttpRequestHandler'에서 상속 받고 있습니까? –
보통 : class myhandler (BaseHttpRequestHandler) : –