python - 在 python 2.7 中,你可以让 __contains__ 超级方法接受 3 个参数吗?
问题描述
我想让 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关键字。
解决方案
如果您想要某种 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)
这没有多大意义,但它是可行的。
推荐阅读
- asp.net - Razor 页面中无法识别传递的 IEnumerable(of T) 成员的模型类型
- node.js - Node.js如何将数组索引传递给异步函数
- r - 如何创建一个根据指定字典重命名列名的函数?
- android - 代号一个应用订阅 submitReceipt 未调用
- mysql - Laravel 迁移不兼容的外键
- tomcat - 使用 tomcat-for-java 插件在 vscode 中运行 war 包时发生与 `user.dir` 系统属性异常相关的权限被拒绝
- c# - Office365 SMTP 服务器替换主题中的国际字符
- c# - 如何基于单选按钮设置值
- json - 如何在没有双引号的情况下获取json中的整数值?
- python - Django密码重置页面加载问题