class Sorter:
    def sort(self, list):
        for i in range(len(list) - 1):
            for j in range(i, len(list)):
                if self.compareItems(list[i], list[j]):
                    list[i], list[j] = list[j], list[i]

    def getName(self):
        return "Trieur de liste"

    def getDescription(self):
        raise NotImplementedError
        
    def compareItems(self, item1, item2):
        raise NotImplementedError

class AscendantSorter(Sorter):
    def compareItems(self, item1, item2):
        return item1 >= item2
    def getDescription(self):
        return "Tri par ordre normal"
    def getName(self):
        return "Ascendant"

class DescendantSorter(Sorter):
    def compareItems(self, item1, item2):
        return item1 <= item2
    def getDescription(self):
        return "Tri par ordre inverse"

if __name__ == '__main__':
    list = ['b', 'e', 'a', 'c', 'z']
    s = AscendantSorter()
    s.sort(list)
    print list
    s = DescendantSorter()
    s.sort(list)
    print list