<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def popular(self, period=DAILY):
        '''
        Get popular songs.

        :param period: time period
        :rtype: a generator generates :class:`Song` objects

        Time periods:

        +---------------------------------+-----------------------------------+
        | Constant                        | Meaning                           |
        +=================================+===================================+
        | :const:`Client.DAILY`           | Popular songs of this day         |
        +---------------------------------+-----------------------------------+
        | :const:`Client.MONTHLY`         | Popular songs of this month       |
        +---------------------------------+-----------------------------------+
        '''
        songs = self.connection.request(
            'popularGetSongs',
            {'type': period},
            self.connection.header('popularGetSongs'))[1]['Songs']
        return (Song.from_response(song, self.connection) for song in songs)