我的课程如下:
class Member:
def __init__(self, name, zip, hire_date, birth_date):
self.id = id
self.name = name
self.zip = zip
self.hire_date = hire_date
self.birth_date = birth_date
def get_name(self):
return self.name
def get_birth_date(self):
return self.birth_date
def get_hire_date(self):
return self.hire_date
def get_zip_code(self):
return self.zip
我需要根据邮政编码、姓名、出生日期和雇用日期对此类对象的列表进行快速排序.我可以使用单独的排序方法来实现这些.例如,按邮政编码快速排序:
def partition(array, begin, end):
pivot = begin
for i in range(begin+1, end+1):
if array[i].get_zip_code() <= array[begin].get_zip_code():
pivot += 1
array[i], array[pivot] = array[pivot], array[i]
array[pivot], array[begin] = array[begin], array[pivot]
return pivot
def quicksort(array, begin=0, end=None):
if end is None:
end = len(array) - 1
def _quicksort(array, begin, end):
if begin >= end:
return
pivot = partition(array, begin, end)
_quicksort(array, begin, pivot-1)
_quicksort(array, pivot+1, end)
return _quicksort(array, begin, end)
这很好用.但是现在我如何使相同的方法在所有属性上工作;理想情况下,通过向quicksort()
传递一个附加参数来定义要排序的属性.我还希望不直接调用对象属性,而是使用getter方法.
这是按邮政编码排序后的输出
Name Zip Hire Date Birth Date
Cosmo Kramer 111-222 2019-06-01 1979-08-12
George Costanza 131-212 2016-06-01 1980-08-12
Jerry Seinfeld 223-212 2017-06-01 1981-06-15
John Wayne 323-212 2018-06-01 1962-06-17