python“in”运算符反映的魔术方法

2024-04-17

|运算符有两种魔法方法,普通方法和反射方法。

# object + other
__or__(self, other)
    # Implements bitwise or using the | operator.

# other + object
__ror__(self, other)
    # Implements reflected bitwise or using the | operator.

in运算符只有一种魔法方法。

# item in object
__contains__(self, item)
    # __contains__ defines behavior for membership tests using in and not in.

我该如何实施in算子反映魔法方法?

# object in sequence
__rcontains__(self, sequence):
    # defines behavior for self in or not in sequence

当你想实现sql条件时它会很有用

class Field(object):
    def __lt__(self, other):
        return '<', self._value, other

Model.objects.filter(Field('a') > 1)
Model.objects.filter(Field('a') in [1, 2, 3, 4])

你不能,因为in运算符在语义上与对象“包含”另一个对象的含义的定义相关联。所以操作必须在容器类中定义(这里,list),而不是值 (Field).

为了显示,in在你的情况下应该这样使用:

Field('a') in [Field('a'), Field('b'), Field('c')]

这当然不是你想要的。

正如您在评论中提到的,您在这里可以得到的最接近的东西是使用 Django 之类的东西fieldname__in==[1, 2, 3, 4]或 SQLAlchemy 的Table.fieldname.in_([1, 2, 3, 4])。例如,您可以添加一个方法Field:

Field('a').is_in([1, 2, 3])

另一种方法是创建一个特定的容器类,以便您可以编写:

Field('a') in Values([1, 2, 3])

但它不仅更冗长(需要额外的导入),而且我认为更难理解背后到底发生了什么。

这也可以工作:

Field('a') == [1, 2, 3]

但同样,它感觉更“神奇”和令人困惑,因为它不尊重==.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python“in”运算符反映的魔术方法 的相关文章

  • Mac OS 上的诗歌安装失败,显示“should_use_symlinks”

    我正在尝试使用以下命令安装诗歌 curl sSL https install python poetry org python3 但它失败了 但有以下例外 例外 此版本的 python 无法在不使用符号链接的情况下创建 venvs 下面是详
  • Google App Engine queue.yaml 无法在开发服务器中工作

    我无法让 dev appserver py 识别我使用queue yaml 创建的自定义队列 他们没有出现在http localhost 8000 taskqueue http localhost 8000 taskqueue 当我尝试向其
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • 使用 python 绘制正值小提琴图

    我发现小提琴图信息丰富且有用 我使用 python 库 seaborn 然而 当应用于正值时 它们几乎总是在低端显示负值 我发现这确实具有误导性 尤其是在处理现实数据集时 在seaborn的官方文档中https seaborn pydata
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 将seaborn.palplot轴添加到现有图形中以可视化不同调色板

    将seaborn人物添加到子图中是usually https seaborn pydata org examples cubehelix palette html创建图形时通过传递 ax 来完成 例如 sns kdeplot x y cma
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • 如何在 Meteor 中缓存数据?

    感谢大家 最近我想在meteor上建立一个小型cms 但有一些问题 1 缓存 页面缓存 数据缓存等 例如 当人们搜索某篇文章时 在服务器端 Meteor publist articles function keyword return Ar
  • chrome.storage 在 chrome 扩展中未定义

    我正在开发一个 Google Chrome 扩展程序 并且已经为此工作了一段时间 所以它已经安装了一段时间 我更新了清单文件以包含 存储 权限并重新加载扩展 但是 当我在控制台中尝试时 chrome storage is undefined
  • Microsoft Bot 在 WebChat 中显示不必要的重复消息?

    当用户第一次访问我的聊天室时 他们会收到欢迎消息 并立即被要求提供他们的名字 一旦用户输入他们的名字 就会出现欢迎消息 并再次显示输入名字的文本提示 只有在他们第二次输入名字后 机器人才会继续处理下一个有关姓氏的问题 此外 当用户最终在第一
  • 在 Java JFrame 上添加图像 - Netbeans

    我在用着NetBeans 7 1用 Java 编写代码 我已经创建了一个JFrame充满了一些labels textbox and buttons 我该如何导入一些图像 JPG PNG etc 从我的电脑到同一个JFrame 在框架的特定位
  • 如何以 const 形式返回指向指针列表的私有指针?

    我有一个指向指针列表的指针 作为私有变量 我还有一个 getter 它返回指向列表的指针 我需要保护它免受更改 我找不到如何使用reinterpret cast 或const cast 对此 class typeA shared ptr
  • 实现字典的 Applicative 实例(Map、关联数组)

    为关联数组实现函子实例 本质上是映射操作 似乎很简单 例如 参见Functor定义 1 然而 Applicative实例未定义 地图不是应用程序有一个很好的理论理由吗 它们需要什么额外的限制才能成为应用程序 1 https hackage
  • 如果 B 列中的值 = 特定文本,则将特定文本插入到 A 列中的值中

    简单地说 如果 B 列中的任何单元格包含thisvalue然后附加到 A 列中的相邻单元格sometext 这是怎么做到的 一个简单的 if 语句 例如 IF ISNUMBER SEARCH thisvalue B1 sometext 编辑
  • 多个 NSEntityDescription 声明 NSManagedObject 子类

    我正在创建一个允许我使用核心数据的框架 在框架的测试目标中 我配置了一个名为的数据模型MockModel xcdatamodeld 它包含一个名为MockManaged有一个单一的Date财产 为了测试我的逻辑 我正在创建一个内存存储 当我
  • 为什么必须对存储在堆中的函数的局部变量调用delete?

    假设您有以下函数 void doSomething int data new int 100 为什么这会产生内存泄漏呢 由于我无法在函数外部访问此变量 为什么编译器不在每次调用此函数结束时自行调用delete 为什么这会产生内存泄漏呢 因为
  • 核心数据迁移非常慢

    我正在尝试执行核心数据迁移 一切正常 只是迁移本身需要 10 多秒的时间 我正在使用 xcmappingmodel 在两个模型版本之间进行映射 效果很好 除了所需的时间长度之外 在下面的代码中 开始迁移 和 完成迁移 日志之间有 10 秒
  • 如何使用 make 打印目标的所有先决条件并构建规则

    一个大的项目通常有一个复杂的Makefile系统 有许多变量定义和目标先决条件依赖项分散在不同的 Makefile 中 有什么方便的方法来打印目标的所有先决条件和构建规则吗 具体来说 有两个问题 问题1 假设我有四个 Makefile 生成
  • 设置并验证 Python MySQL 连接中使用的 SSL/TLS 版本

    如何告诉 Python MySQL 连接器使用哪种 SSL TLS 协议 特定的 例如 TLS1 2 或最低的 如何检查已建立的连接使用哪种协议 我有一个应用程序使用mysql connector python 8 0 18 我连接这样的东
  • 将 CMake 变量从 GUI 导出到命令行

    是否可以将 CMake GUI 中设置的所有变量值导出到单个命令行字符串 以便可以从外部工具快速使用它 所以输出会是这样的 cmake DVar1 ON DVar2 foo 你可以从 Tools gt Show My Changes
  • Corda 真的需要公证人才能达成唯一性共识吗?

    科达共识简介 https docs corda net releases release V2 0 key concepts consensus html说 唯一性共识是由公证人提供的 我们是说 如果没有公证人 A 有可能说服 B 将一笔交
  • 我如何通过查询从 Firestore 获取单个文档(我正在使用 Ionic 4 )

    早上好 我在 firestore 中有数据库如下 collections documents fields 123 news1 title some data news2 content some data 例如我想获取我的 ionc4 应
  • Java FXML 从绝对路径加载(动态)

    我想从绝对路径或 jar 系统外部的路径加载 fxml 文件 背景 它将是一个简单的插件系统 在插件文件夹中查找所有 fxml 文件 后来的 jar 文件 并将其自动包含在 TabPane 中 String fxmlpath C plugi
  • ColdFusion 参数化查询

    我运行一个查询来填充我试图参数化的 CFChart
  • 强制使用牙套

    作为我不久前写的代码标准文档的一部分 我强制要求 您必须始终对循环和 或条件代码块使用大括号 即使 特别是 它们只有一行 Example this is wrong if foo bar else baz while stuff thing
  • 气泡聊天布局

    我有一个布局
  • python“in”运算符反映的魔术方法

    运算符有两种魔法方法 普通方法和反射方法 object other or self other Implements bitwise or using the operator other object ror self other Imp