I'm not sure if the alias SA uses for func.count is a stable interface.  Maybe explicitly naming it in the previous query would be good?  I think that would look like this:

leaderboard = self.session\
    .query(Person, func.count(Person.assertions).label('count_1'))\
    .join(Assertion)