在python 2.7中,你可以使__contains__ super方法获取3个参数吗?

时间:2018-05-08 02:58:57

标签: python python-2.7

我想让超级方法包含的工作方式略有不同。

我想这样做,你可以给它一个两个整数。如果第一个整数小于该类的实例,并且第二个整数大于该类的实例它将返回True。这是我的尝试。

class test(object):
    def __init__(self, item):
        self.item= item
    def __contains__(self,other1,other2):
        if other1<self.item<other2:
            return True
        else:
            return False

x=test(5)

print 1 in x 

我收到此错误

TypeError: __contains__() takes exactly 3 arguments (2 given)

正如您所看到的,我甚至不知道如何为包含方法做3个参数。但是为了举例,Id尝试检查5是否介于1和7之间。

我知道我可以用自己制作的方法做到这一点,但我想要使用 关键字。

1 个答案:

答案 0 :(得分:2)

如果你想要某种3参数in运算符,你必须构建自己经过深度修改的Python解释器,包括重写基本语法规则。

你可以很容易地取出一个元组:

class Blah(object):
    def __init__(self, val):
        self.val = val
    def __contains__(self, l):
        a, b = l
        return a < self.val < b

print (1, 3) in Blah(2)

它没有多大意义,但它是可行的。