我试图弄清楚如何赋予对象解包值的能力。
我想出的用例如下:
- 让我们有一个Interval类,我们将使用它来评估实值函数。
- 我们想要求
- 会员资格,因此
__contains__
。 - 通过使用特定步骤调用或仅使用默认步骤对其进行迭代,因此
__call__
, 和__iter__
.
- 会员资格,因此
- 将来我会支持联合和交叉。
我正在寻找的功能之一是能够调用 Interval 对象并将其解包,例如 ifI = Interval(1, 2)
和a, b = *I
thena == 1
和b == 2
.
这主要适用于在参数中具有区间限制的函数。
例如一个函数def Integrate(f, a, b): ...
,然后我们进行评估,integral = Integrate(f, *I)
其中 $f$ 是实值函数,并且I
是我们正在讨论的区间。
问题是我不完全确定应该使用哪种数据模型方法。
到目前为止,我想出的示例类如下。
class Interval:
def __init__(self, a, b):
if a >= b:
raise Exception("Invalid values for an interval")
self.upper = b
self.lower = a
def __contains__(self, value):
return self.lower <= value <= self.upper
def __call__(self, h=_h):
yield from dense_range(self.lower, self.upper, h)
def __iter__(self):
return self()
def __repr__(self):
return f"<Interval [{self.lower}, {self.upper}]>"
有任何想法吗?