Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как мне создать объект с параметрами, которые передаются на сервер после его создания? python, socket

Тимур Рахимов Знаток (449), на голосовании 2 месяца назад
Как мне создать объект с параметрами, которые передаются на сервер после его создания? python, socket. Т. е сначала я создаю объект Player, а уже потом получаю от клиента героя, для класса Player, но этот герой должен быть частью класса PlayerА если создавать объект Player после получения данных, то как это сделать один раз? Ведь у меня там идет вечный цикл
Голосование за лучший ответ
Василий Каменец Знаток (499) 3 месяца назад
Чтобы создать объект Player в Python с параметрами, которые поступают позже, вы можете сделать так:

Создайте объект Player с пустыми или временными параметрами.
Получите данные от клиента.
Измените параметры объекта после создания, когда получите данные от клиента.
Вот как это можно реализовать:

python
Копировать код
class Player:
def __init__(self):
# Параметры по умолчанию, которые позже будут изменены
self.hero = None

def set_hero(self, hero):
self.hero = hero

def __repr__(self):
return f'Player(hero={self.hero})'
Теперь в основном цикле сервера создайте объект Player и используйте его метод set_hero() для изменения параметров после получения данных от клиента:

python
Копировать код
import socket

# Создаем объект Player до начала работы с клиентом
player = Player()

# Настраиваем сервер
server_socket = socket.socket(socket AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()

print("Server is listening...")

# Бесконечный цикл, чтобы работать с клиентом
while True:
client_socket, address = server_socket.accept()
print(f'Connection from {address} established')

# Получаем данные от клиента, например, имя героя
data = client_socket.recv(1024).decode('utf-8')

# Устанавливаем героя для объекта Player после его создания
if not player.hero:
player.set_hero(data)
print(f'Hero set to: {player.hero}')
else:
print(f'Player already has a hero: {player.hero}')

# Ваша основная логика обработки запросов
# Закрываем соединение после обработки
client_socket.close()
Тимур РахимовЗнаток (449) 3 месяца назад
СПАСИБО!!!
Похожие вопросы