当前位置: 首页 > 面试题库 >

有没有一种方法可以在Python中返回min和max的自定义值?

颜文昌
2023-03-14
问题内容

我有一个定制课程,

class A:
    def __init__(self, a, b):
        self.a = a
        self.b = b

这个类不可iterable或indexable之类的。如果有的话
可能的话,我想保持这种状态。有什么可能吗
喜欢下面的工作吗?

>>> x = A(1, 2)
>>> min(x)
1
>>> max(x)
2

让我想到这个的是
min以及
max列为
中的“公共顺序操作”
[文档](https://docs.python.org/3/library/stdtypes.html#通用-顺序-
操作)。自
range已考虑
对于同一个文档的序列类型,我认为
对“range”可能进行某种优化,也许我
可以利用它。
也许有一个神奇的方法,我不知道,将使这一点?


问题答案:

对。当’min’接受一个参数时,它假定它是iterable,然后迭代
然后取最小值。所以,

class A:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __iter__(self):
        yield self.a
        yield self.b

Should work.

附加说明:如果你不想使用iter,我不知道怎么做
就这么做吧。您可能想创建自己的min函数,该函数调用
`_如果传递给的参数中有一个参数,则调用
旧的’min’else。

oldmin = min
def min(*args):
    if len(args) == 1 and hasattr(args[0], '_min_'):
        return args[0]._min_()
    else:
        return oldmin(*args)


 类似资料:
  • 问题内容: 我有一个自定义课程, 该类不可迭代或可索引或诸如此类。如果可能的话,我想保持这种方式。是否可以进行以下工作? 我想到的是这个问题,并且在docs中被列为“公共序列操作” 。由于完全相同的文档将其视为序列类型,因此我一直认为必须存在某种可能的优化方法,也许我可以利用它。 也许有一种我不知道的魔术方法可以实现这一目标? 问题答案: 是。当采用一个参数时,它假定它是可迭代的,对其进行迭代并采

  • 问题内容: 我正在开发一个新项目(),并创建了一个包含大量变量的Object。由于我打算为所有这些添加吸气剂和设置器,所以我想知道:是否存在在给定类中自动生成吸气剂和设置器的捷径? 问题答案: 在所需类的源代码窗口中弹出上下文菜单(即右键单击)。然后选择子菜单;从该菜单中进行选择将导致出现向导窗口。 选择您要为其创建getter和setter的变量,然后单击。

  • 问题内容: 在Oracle中,可以使用: 仅显示日期的年和月部分。此外,您可以设置更改默认情况下返回日期的方式。 我知道在SQL Server中,您可以使用一组预定义的选项: 但是有没有一种选择可以给我与甲骨文一样的自由呢?最好是不需要我创建自定义函数的函数。 问题答案: 当前最好的选择是拥有CLR函数,该函数是.NET的包装器。 如果您不想使用单独的函数,则可以从片段中构建所需的字符串: 至于确

  • 我们可以使用这些jvm标志来确定编译阈值,但是有没有一种方法可以在运行时以编程方式确定它?

  • 我目前正在努力实现一种保护隐私的数据挖掘算法。对于不同各方之间的通信部分,我使用的是Netty 4.0。双方之间的通信流如下所示: 其中是启动和控制整个计算的主方。安全多方乘法的逻辑位于 Netty 中。还有另一种用于安全添加的协议。 目前,我使用类似的解决方案,如Netty核心团队的Norman Maurer所示,以了解子协议计算是否已完成。但这感觉有点像是在对抗框架。 是否有办法从< code