在Python2.7中,能否使\uuu contains \uuuuuu super方法接受3个参数?

2024-10-04 01:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让super方法包含的的工作方式有点不同

我想让它变成两个整数。如果第一个整数小于类的实例,第二个整数大于类的实例,则返回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)

如您所见,我甚至不知道如何为contains方法执行3个参数。但是为了举例,我试着检查5是否在1和7之间

我知道我可以用一种我自己能做的方法来做这件事,但是我想使用in关键字


Tags: 实例方法intestselftruereturndef
1条回答
网友
1楼 · 发布于 2024-10-04 01:25:22

如果需要某种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)

这没什么意义,但它是可行的

相关问题 更多 >