gpt4 book ai didi

python - 基于python中类对象的属性(不是属性)的最小值/最大值

转载 作者:行者123 更新时间:2023-11-28 20:46:59 25 4
gpt4 key购买 nike

考虑以下代码片段。

class MyClass(object):
@property
def foo(self):
return self._foo

l = [my_class1, my_class2]

min(l, key=MyClass.foo) # doesn't work because foo is not callable.
# "TypeError: 'property' object is not callable"

有没有办法让它发挥作用?

最佳答案

使用 operator.attrgetter :

min(l, key=operator.attrgetter('foo'))

例子:

>>> class MyClass(object):
... def __init__(self, val):
... self._foo = val
... def __repr__(self):
... return 'MyClass({})'.format(self._foo)
... @property
... def foo(self):
... return self._foo
...
>>> import operator
>>> min([MyClass(3), MyClass(1), MyClass(2)], key=operator.attrgetter('foo'))
MyClass(1)

关于python - 基于python中类对象的属性(不是属性)的最小值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19922612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com