Sticking to the model first philosophy, let's spend some time on deciding the appropriate data structure or model for the program.
The data structure of the audio player is fairly simple. All that we expect of the model is to keep a track of playlists. The main data then is a list called play_list, and the Model class is then simply responsible for the addition and removal of items to and from the playlist.
Accordingly we came up with the following Model class for the program (see code 5.02—model.py):
class Model: def __init__(self): self.__play_list =  @property def play_list(self): return self.__play_list def get_file_to_play(self, file_index): return self.__play_list[file_index] def clear_play_list(self): ...