Я создал класс Server, реализующий socketserver.BaseRequestHandler.

Я хочу добавить атрибут self.buffer = ''.

Вот код, который я придумал :

class Server(socketserver.BaseRequestHandler):

  def __init__(self, request, client_address, server):
    super(Server, self).__init__(request=request, client_address=client_address, server=server)
    self.buffer = ''

  def get_first_buffer(self):
    self.buffer = 'Successfully connected.'

  def handle(self):
    if self.buffer == '':
        self.get_first_buffer()
        print(self.buffer)

Вот ошибка, которую я получил

Exception happened during processing of request from ('127.0.0.1', 33564)
AttributeError: 'Server' object has no attribute 'buffer'

ben-ju1

Ответов: 1

Ответы (1)

При инициализации BaseRequestHandler, он фактически вызывает handle, что означает, что self.buffer должен быть установлен до этого, чтобы проверка if self.buffer == '' сработала:

def __init__(self, request, client_address, server):
  # переместите это перед супер инитом
  self.buffer = ''
  super(Server, self).__init__(request=request, client_address=client_address, server=server)

2022 WebDevInsider