For my CS class I the task given was to take a given Person Class with a name and age attributes.

Then, with an existing list of Person Objects, create a function that returns a tuple of (mean, median, mode) on the given age attribute.

Simple enough, but I wondered if my solution is really all that efficient. I basically iterated a new list of ages from an existing list of Person objects, and that almost feels like there's a better opportunity to optimize a solution...

Wondering if I'm missing something obvious.

    from statistics import mean, median, mode

    class Person:

        def __init__(self, name, age):
            """
            initializes a person objects name and age
            """
            self._name = name
            self._age = age

        def get_age(self):
            """
            returns the private data member _age
            """
            return self._age



    def basic_stats(person_list):
        """
        creates a list of ages from a list of person objects then calculates
        mean, median, and mode from the statistics module
        """
        age_list = [i.get_age() for i in person_list]
    
        return (mean(age_list), median(age_list), mode(age_list))