Я довольно новичок в Python и беру некоторые курсы онлайн-безопасности. Должен признаться, что вся концепция классов не кристально чиста, поэтому, вероятно, поэтому я не полностью понимаю концепцию. С сайта python.org они говорят:Python SocketServer - Назначение подкласса BaseRequestHandler
Создание сервера требует нескольких шагов. Во-первых, вы должны создать класс обработчика запросов путем подкласса класса BaseRequestHandler и , переопределяя его метод handle(); этот метод будет обрабатывать входящие запросы . Во-вторых, вы должны создать экземпляр одного из классов сервера, , передавая ему адрес сервера и класс обработчика запроса.
Может кто-нибудь объяснить это лучше? Почему вы должны создать подкласс? Я могу понять силу использования классов с теоретической точки зрения, я просто недостаточно использовал их в своих тестовых сценариях, чтобы получить этот момент «ах-ха». Вот сценарий от курса я беру:
#!/usr/bin/python
import SocketServer
class EchoHandler(SocketServer.BaseRequestHandler):
def handle(self):
print "Got Connection from : ", self.client_address
data = 'dummy'
while len(data):
data = self.request.recv(1024)
print "Client sent: " + data
self.request.send(data)
print "client left"
serverAddr = ("0.0.0.0", 9000)
server = SocketServer.TCPServer(serverAddr, EchoHandler)
server.serve_forever()
Возможно, это не яблоки для яблок, но в концепции это похоже на использование чего-то вроде: от потоковой импорта Thread и import threading? Когда я пишу это, я не уверен, что аналогия даже отдаленно подобна, но является ли SocketServer.BaseRequestHandler формой структуры, которую вы используете в разделе подкласса для вызова? – user2565554