Skip to content

Example for meta programming #65

@PythonCHB

Description

@PythonCHB

This from Kat Egans' mailroom OO:

def sort_by(self, key, low_to_high=False):
       """ Returns new DonorList sorted by given key.
       Keys may be one of total, average, or num. Sort
       from low to high if keyword low_to_high is True.
       Args:
           low_to_high (bool) : sort low to high
        Returns:
            DonorList : new DonorList sorted by given key
        """
        functions = {
            'total': lambda donor: donor.total,
            'average': lambda donor: donor.average,
            'num': lambda donor: donor.num}
        if key not in functions:
            raise KeyError('Invalid argument {}'.format(key))
        return DonorList(*sorted(
            self.donors, key=functions[key], reverse=not low_to_high))

maybe a good example for using getattr()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions