Первый раз в Python class

Впервые встретился с классами в Python. Работает половина из задуманного. Но понимаю, что он слишком громоздкий и можно сократить. https://replit.com/@nekokat89/supportclass

games_type = ["Casual", "Ranked", "Arena", "Draft", "Friend Match"]
fraction_list = ["Monsters", "Skellige", "Scoia'Tael", "Northern Realms", "Nilfgaard", "Syndicate"]
result = ["Win", "Loss", "Draw"]

class match_history(tuple):
  def __init__(self, default = ("",)*6):
    self._game_mode, self._fraction, self._opponent, self._opponent_fraction, self._result,self._score = default

  def __repr__(self):
    return repr((self._game_mode, self._fraction, self._opponent, self._opponent_fraction, self._result,self._score))

  @property
  def game_mode(self):
    return self._game_mode

  @property
  def fraction(self):
    return self._fraction

  @property
  def opponent(self):
    return self._opponent

  @property
  def opponent_fraction(self):
    return self._opponent_fraction

  @property
  def result(self):
    return self._result

  @property
  def score(self):
    return self._score

  @game_mode.setter
  def game_mode(self, item):
    if item in games_type:
      self._game_mode = item

  @fraction.setter
  def fraction(self, item):
    if item in fraction_list:
      self._fraction = item

  @opponent.setter
  def opponent(self, item):
    if type(item) is str:
      self._opponent = item

  @opponent_fraction.setter
  def opponent_fraction(self, item):
    if item in fraction_list:
      self._opponent_fraction = item

  @result.setter
  def result(self, item):
    if item in result:
      self._result = item

  @score.setter
  def score(self, item):
    if type(item) is str:
      self._score = item

Условия были такие: Класс должен был при инициализации без вводных данных (match_history()) создавать пустой кортеж с 6ю элементами типа str ("",)*6. При создании нового экземпляра с данными (match_history(("Casual", "Nilfgaard", "no_skillz_", "Scoia'Tael", "Loss", "0:2"))), необходима проверка 0, 1, 3, 4 элементов кортежа(нереализовано) Вывод экземпляра класса через print и return должен возвращать пустой кортеж или данные (если они есть).

Где разыскать матчасть по классам для "инфузорий"? Неплохо было бы посмотреть пример, в котором присутствует нечто подобное по структуре относительно ввода-вывода данных.


Ответы (0 шт):