2024-04-25 12:53:51 发布
网友
所以我在Python中有一个有效的排序算法。(它的确切内容与这个问题无关)它使用一个名为“people”的列表,其中包含类实例,并且该函数是硬编码的,可以根据特定的属性“财富”对该列表进行排序。在
def my_sort(seq): # sorts by seq[n].wealth ... my_sort(people)
现在,我想对函数进行泛化,这样就可以按任何属性进行排序。在
但这当然会带来一个错误,因为它不知道将“财富”视为一个类属性。那么,这怎么可能呢?在
通用属性getter函数getattr应该可以工作:
getattr
gettattr(obj, name)
您可以传递属性的名称:
def my_sort2(seq, keyname): sort by getattr(seq[n], keyname) my_sort2(people, 'wealth')
或者一个getter函子:
我更喜欢后一种方法,因为它更通用。例如,它很容易允许计算密钥。在
通用属性getter函数
getattr
应该可以工作:您可以传递属性的名称:
或者一个getter函子:
^{pr2}$我更喜欢后一种方法,因为它更通用。例如,它很容易允许计算密钥。在
相关问题 更多 >
编程相关推荐