class Game():
    def __init__(self):
        self._score = 0

    def roll(self, pins):
        self._score += pins

    def score(self):
        return self._score

class Game():
    def __init__(self):
        self._rolls = [0] * 21
        self._current_roll = 0

    def roll(self, pins):
        self._rolls[self._current_roll] += pins
        self._current_roll += 1

    def score(self):
        score = 0
        for frame in range(0, 20, 2):
            if self._is_spare(frame):
                score += 10 + self._rolls[frame + 2]
            else:
                score += self._frame_score(frame)
        return score

    def _is_spare(self, frame):
        return self._rolls[frame] + self._rolls[frame + 1] == 10

    def _frame_score(self, frame):
        return self._rolls[frame] + self._rolls[frame + 1]

Add 'spare' support in when calculating scores