class Band:
  instance = []
  def __init__(self, name, list):
    self.name = name
    self.members = list
    Band.instances.append(self)

  def play_solos(self):
      return [member.play_solo() for member in self.members]
  
  @classmethod
  def to_list(cls):
    return cls.instances

class Musician:
  def __init__(self, name="unknown"):
        self.name = name

class Guitarist(Musician):
  def __init__(self, name):
    super().__init__(name)

  def __str__(self):
    return f'My name is {self.name} and I play guitar'

  def __repr__(self):
    return f'Guitarist instance. Name = {self.name}'

  def get_instrument(self):
    return 'guitar'
  
  def play_solo(self):
    return "face melting guitar solo"


class Bassist(Musician):
  def __init__(self, name):
    super().__init__(name)

  def __str__(self):
    return f'My name is {self.name} and I play bass'

  def __repr__(self):
    return f'Bassist instance. Name = {self.name}'
  
  def get_instrument(self):
    return 'bass'
  
  def play_solo(self):
    return "bom bom buh bom"

class Drummer(Musician):
  def __init__(self, name):
    super().__init__(name)

  def __str__(self):
    return f'My name is {self.name} and I play drums'

  def __repr__(self):
    return f'Drummer instance. Name = {self.name}'

  def get_instrument(self):
    return 'drums'

  def play_solo(self):
    return "rattle boom crash"