是。当min
采用一个参数时,它假定它是可迭代的,对其进行迭代并采用最小值。所以,
class A:
def __init__(self, a, b):
self.a = a
self.b = b
def __iter__(self):
yield self.a
yield self.b
应该管用。
附加说明:如果您不想使用__iter__
,我不知道这样做的方法。您可能想创建自己的min函数,_min_
如果传递给它的参数中有一个方法,则调用某个方法,然后调用旧方法min
。
oldmin = min
def min(*args):
if len(args) == 1 and hasattr(args[0], '_min_'):
return args[0]._min_()
else:
return oldmin(*args)