from itertools import chain


def get_measures(clazz):
    """
    Gets all the measures of a clazz.

    :param clazz: Clazz.
    :return: List of measures.
    """

    is_property = lambda v: isinstance(v, property)
    is_public = lambda n: not n.startswith('_')
    is_valid = lambda n, v: is_public(n) and is_property(v)

    measures = sorted(list(chain(*[[n for n, v in vars(c).items() if is_valid(n, v)] for c in clazz.__mro__])))

    return measures