使用类属性作为函数参数?

2024-04-25 12:53:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在Python中有一个有效的排序算法。(它的确切内容与这个问题无关)它使用一个名为“people”的列表,其中包含类实例,并且该函数是硬编码的,可以根据特定的属性“财富”对该列表进行排序。在

def my_sort(seq):
    # sorts by seq[n].wealth
    ...
my_sort(people)

现在,我想对函数进行泛化,这样就可以按任何属性进行排序。在

^{pr2}$

但这当然会带来一个错误,因为它不知道将“财富”视为一个类属性。那么,这怎么可能呢?在


Tags: 实例函数算法内容编码列表属性排序
2条回答

通用属性getter函数getattr应该可以工作:

gettattr(obj, name)

您可以传递属性的名称:

def my_sort2(seq, keyname):
    sort by getattr(seq[n], keyname)

my_sort2(people, 'wealth')

或者一个getter函子:

^{pr2}$

我更喜欢后一种方法,因为它更通用。例如,它很容易允许计算密钥。在

相关问题 更多 >