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

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

Тимур Рахимов Знаток (371), открыт 2 недели назад
Как мне создать объект с параметрами, которые передаются на сервер после его создания? python, socket. Т. е сначала я создаю объект Player, а уже потом получаю от клиента героя, для класса Player, но этот герой должен быть частью класса PlayerА если создавать объект Player после получения данных, то как это сделать один раз? Ведь у меня там идет вечный цикл
1 ответ
Василий Каменец Знаток (462) 2 недели назад
Чтобы создать объект 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()
Тимур РахимовЗнаток (371) 2 недели назад
СПАСИБО!!!
Похожие вопросы