code: def get_songs(self, cache=True, results=15, start=0):
          
          
          if cache and ('songs' in self.cache) and results==15 and start==0:
              if not isinstance(self.cache['songs'][0], Song):
                  song_objects = []
                  for s in self.cache["songs"]:
                      song_objects.append(Song(id=s['id'], 
                                               title=s['title'],
                                               artist_name=self.name,
                                               artist_id=self.id))
                  self.cache['songs'] = song_objects
              return self.cache['songs']
          else:
              response = self.get_attribute('songs', results=results, start=start)
              for s in response['songs']:
                  s.update({'artist_id':self.id, 'artist_name':self.name})
              songs = [Song(**util.fix(s)) for s in response['songs']]
              if results==15 and start==0:
                  self.cache['songs'] = ResultList(songs, 0, response['total'])
              return ResultList(songs, start, response['total'])
docs: Get the songs associated with an artist
          
          Args:
          
          Kwargs:
              cache (bool): A boolean indicating whether or not the cached value should be used (if available). Defaults to True.
              
              results (int): An integer number of results to return
              
              start (int): An integer starting value for the result set
              
          Results:
              A list of Song objects; list contains additional attributes 'start' and 'total'
          
          Example:
  
          >>> a = artist.Artist('Strokes')
          >>> a.get_songs(results=5)
          [<song - Fear Of Sleep>, <song - Red Light>, <song - Ize Of The World>, <song - Evening Sun>, <song - Juicebox>]
          >>>