Ссылка на объект по его атрибуту - PullRequest
0 голосов
/ 08 мая 2020

У меня есть класс для создания плеера:

class player:

# Method to create object (Constructor)
    def __init__(self, pl_id, alive = True, health = 100):

        self.pl_id = pl_id
        self.alive = alive
        self.health = health

Затем у меня есть внешний интерфейс, который предоставляет уникальный идентификатор. Я создаю игрока с этим идентификатором

def create_player(myInterface):

    # Get user attributes
    user = myInterface.unique_user

    print('Hello {}'.format(user['name']))

    myPlayer = player(user['id'])

Мне нужно иметь возможность ссылаться на myPlayer по его идентификатору для будущих функций из интерфейса, например,

def take_damage(myInterface):

    user = myInterface.unique_user

    damage = myInterface.damage

У меня будет несколько игроков в game, я хочу иметь возможность сделать что-то вроде этого:

    myPlayer.health = myPlayer.health - damage

Однако я не вижу, как я могу указать, какой игрок должен получать функцию. Должен ли я динамически называть myPlayer, чтобы он содержал user_id. Будет ли это плохой практикой? Это правильное использование класса?

myInterface на самом деле из другого пакета (python -telegram-bot), поэтому редактирование myInterface может быть немного сложным ...

Спасибо,

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете попробовать это:

    def take_damage(self, damage):
        self.health = max(self.health - damage, 0)
        if self.HP == 0:
            print("{} dies....".format(self.pl_id))
            raise Dead
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...