如何消除 python3 等式运算符的弃用警告?

2023-12-29

虽然标题可以理解为三个问题,但实际问题描述起来很简单。在 Linux 系统上,我安装了 python 2.7.3,并且希望收到有关 python 3 不兼容性的警告。因此,我的代码片段(tester.py) 好像:

#!/usr/bin/python -3

class MyClass(object):    
    def __eq__(self, other):
        return False

当我执行此代码片段(认为只是为了显示问题,而不是我在项目中使用的实际代码段)时

./tester.py

我收到以下弃用警告:

./tester.py:3: DeprecationWarning: Overriding __eq__ blocks inheritance of __hash__ in 3.x
  class MyClass(object):

我的问题:如何更改此代码片段以消除警告,即使其与版本 3 兼容?我想以正确的方式实现相等运算符,而不仅仅是抑制警告或类似的内容。


来自文档 http://docs.python.org/3.4/reference/datamodel.htmlPython 3.4 的页面:

如果一个类没有定义__eq__()方法不应该定义一个__hash__()操作任一;如果它定义了__eq__()但不是__hash__(),它的实例将不能用作可散列集合中的项目。如果一个类定义了可变对象并实现了__eq__()方法,它不应该实现__hash__(),因为可散列集合的实现要求键的散列值是不可变的(如果对象的散列值发生变化,它将位于错误的散列桶中)。

基本上,您需要定义一个__hash()__功能。

问题是对于用户定义的类,__eq()__ and __hash()__函数是自动定义的。

x.__hash__()返回一个适当的值,使得x == y暗示 两者都是x is y and hash(x) == hash(y).

如果您只定义__eq()__, then __hash()__设置为返回None。所以你会撞墙。

如果您不想费心实施,则更简单的方法__hash()__并且您确定您的对象永远不会被散列,您只需明确声明__hash__ = None它负责处理警告。

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

如何消除 python3 等式运算符的弃用警告? 的相关文章

  • 我无法使用 Python 和 Facebook Marketing API 获取所有 Facebook 营销活动的统计信息

    我正在尝试检索以下指标 date campaign name impressions clicks spend 在我的 Facebook 帐户中的所有活动中 但显然我编写的脚本仅返回某些活动的统计数据 而不是全部 它仅返回大多数营销活动的营
  • 代码 zip( *sorted( zip(units, error) ) ) 的作用是什么?

    对于我的申请units and errors始终是数值列表 我尝试用谷歌搜索每个部分的作用 并找出了 zip 的第一部分 它似乎 ziped list zip units errors 只需将单位和误差配对即可生成一个列表 如下所示 uni
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 如何使用子进程打开新的浏览器选项卡?

    我正在打开一个新的 IE 窗口 subprocess Popen r os environ PROGRAMFILES Internet Explorer IEXPLORE EXE Call URL 当 IE 关闭时这很好 但即使打开它也会生
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • 如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

    Scikit learn 具有相当用户友好的用于机器学习的 python 模块 我正在尝试训练用于自然语言处理 NLP 的 SVM 标记器 其中我的标签和输入数据是单词和注释 例如 词性标记 而不是使用双精度 整数数据作为输入元组 1 2
  • 使用 Matplotlib、PyQt 和 Threading 进行实时绘图导致 python 崩溃

    我一直在努力研究我的 Python 应用程序 但找不到任何答案 我有 PyQT GUI 应用程序 它使用 Matplotlib 小部件 GUI 启动一个新线程来处理 mpl 小部件的绘图 恐怕我现在通过从另一个线程访问 matplotlib
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • python 中的异步编程

    python 中有异步编程的通用概念吗 我可以为一个函数分配一个回调 执行它并立即返回主程序流 无论该函数的执行需要多长时间吗 您所描述的 主程序流程在另一个函数执行时立即恢复 不是通常所说的 异步 又名 事件驱动 编程 而是 多任务 又名
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • Django:在单独的线程中使用相同的测试数据库

    我正在使用具有以下数据库设置的测试数据库运行 pytests DATABASES default ENGINE django db backends postgresql psycopg2 NAME postgres USER someth
  • 为什么 Python exec 中的模块级变量无法访问?

    我正在尝试使用Pythonexec in a project https github com arjungmenon pypage执行嵌入的Python代码 我遇到的问题是在模块级 in an exec声明是难以接近的来自同一模块中定义的
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • 透视包含字符串的 Pandas Dataframe - “没有要聚合的数字类型”错误

    关于此错误有很多问题 但环顾四周后 我仍然无法找到 解决解决方案 我正在尝试用字符串旋转数据框 以使一些行数据变成列 但到目前为止还没有成功 我的 df 的形状
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入

随机推荐

  • MySQL。无法创建表 errno 150

    我必须在 MySQL 中创建一个包含两个表的数据库 但脚本失败并显示 errno 150 外键问题 我仔细检查了两个表上的外键字段是否相同 但没有发现任何错误 这是脚本 SET OLD UNIQUE CHECKS UNIQUE CHECKS
  • 在 Swift 中使用 CoreGraphics 在屏幕上绘制像素

    下面的代码尝试将像素设置为离线位图并将该位图绘制到屏幕上 不幸的是 它崩溃了 import UIKit class GameView UIView required init coder aDecoder NSCoder super ini
  • 在 Node 环境中导入 SQL 转储

    我想要一个 npm 脚本来创建 配置 等等 最后导入 SQL 转储 整个创建 配置等都在工作 但是 我无法让导入工作 数据永远不会被插入 这是我所拥有的 不用介意嵌套回调 因为它们将变成承诺 connection query DROP DA
  • Play Framework 1.2:如何添加自定义模块依赖项

    我在迁移到 Play 1 2 的过程中有点迷失 我们有一套定制的 我们的应用程序中的模块 在 Play 1 1 1 中我们使用了这个结构 root module1 module2 moduleN main app 并且 applicatio
  • 如何按最近的时间日期连接两个数据框?

    我有 2 个数据集 每个数据集包含 POSIXlt 格式的日期时间值 以及一些其他数字和字符变量 我想根据日期时间列合并两个数据集 但是两个数据集的日期戳不匹配 所以我需要按最近的日期 之前或之后 将它们组合起来 在我的示例中 2016 0
  • 如何在jquery中读取json结果?

    我对 jquery 不熟悉 你能帮我一下吗 我有一个来自 url 的 json 响应 但我不知道如何读取 jquery 中的键值 例如 如何获取 HAWBItemEntity 值 请检查下面的 json 响应 waybill log Tra
  • WooCommerce 4.0 电子邮件、管理订单和感谢页面上的自定义结账和 ACF 字段值

    我很难将自定义字段值打印到电子邮件通知 订单管理和感谢页面 我浏览了 StackOverflow 尝试了我找到的每一个答案 但不幸的是不起作用 我无法找出问题所在 我试图传递附加结账字段的值 它只打印带有空白值的强标签 并且在电子邮件中没有
  • 是否可以重写 C# 中的构造函数?

    派生类中是否可以重写基类的构造函数 如果是这样 如何实现以及在什么用例中这是实用的 如果没有 为什么不呢 不 你不能重写构造函数 这个概念在 C 中没有任何意义 因为构造函数根本就不是多态调用的 您总是声明您要构造哪个类 以及构造函数的参数
  • PowerShell 从 GitHub API 下载 Zip 文件

    我想编写一个 PowerShell 脚本来按照以下说明下载 ZIP 格式的 GitHub 存储库 https docs github com en rest reference repos contents https docs githu
  • 不允许 kubernetes mysql chown 操作

    我目前正在试验 Kubernetes 并在我本地运行的 ESX 基础设施上安装了一个小型集群 我使用 Project Atomic 和 Fedora 安装了两个从属节点和一个主节点 集群全部安装良好并且似乎正在运行 然而 我首先想让一个 M
  • 如何在 Express 服务器启动时运行函数?

    我似乎无法弄清楚如何让我的 Express 服务器在服务器启动时运行一个简单的功能 调用在服务器启动时运行的函数的适当位置以及正确的语法在哪里 我的路线文件中的功能为exports myFunction function code here
  • 如何在 C# 中实现 C++ 风格的函数指针?,不使用委托

    我正在学习 C 中的指针 很好奇是否可以在 C 中使用 C 风格的函数指针 是的 我知道 C 对于函数指针有其自己的等效概念 称为委托 但我只是想知道是否可以在 C 中使用指针而不使用委托来实现相同的效果 如果在 C 中使用指针是完全合法的
  • 带冒号的 Lua 函数

    我在完全理解 lua 语法时遇到问题 因此虽然这个答案可能很简单 但也许一些权威参考文献将帮助我和其他人进一步学习 function blah and function classname blah Aubergine18 的帖子涵盖了答案
  • Typesense:超出错误超时

    我正在使用 Reactjs 并且在将数据从 Firestore 同步到 Typesense 时遇到问题 我正在关注这个文档 https typesense org docs guide firebase full text search h
  • isEqual 并不总是适用于 NSIndexPath?我可以用什么来代替它?

    我有一些代码依赖于比较两个 NSIndexPaths 并根据它们的相等性或不相等性执行不同的代码 使用 isEqual 大多数时候它可以正常工作 但有时却不能 我已使用调试器控制台在代码执行期间测试两个索引路径 它们对我来说看起来相同 这是
  • 具有对角切割视图的自定义按钮背景

    I want to set background as shown in image 例如 我尝试过很多教程 https medium com adinugroho create diagonal cut view in android 5
  • 找出 CDATA 在 lxml 元素中的位置?

    我需要解析和重建解析器使用的文件格式 该解析器所使用的语言只能被慷慨地描述为 XML 我意识到符合标准的 XML 并不关心 CDATA 或空白 但不幸的是这个应用程序要求我关心两者 我在用着lxml etree因为它非常擅长保存 CDATA
  • 如何在 Python 中获取 URL 的基址?

    我正在尝试确定 URL 的基础 或除页面和参数之外的所有内容 我尝试使用 split 但是有没有比将其分成几部分更好的方法 有没有办法删除最后一个 中的所有内容 鉴于这种 http 127 0 0 1 asdf login php http
  • 仅使用 2 列键的第二列对 data.table 进行子集化,使用二分搜索而不是矢量扫描

    我最近发现了二分搜索data table 如果表按多个键排序 是否可以仅在第二个键上搜索 DT data table x sample letters 1e7 T y sample 1 25 1e7 T rnorm 1e7 setkey D
  • 如何消除 python3 等式运算符的弃用警告?

    虽然标题可以理解为三个问题 但实际问题描述起来很简单 在 Linux 系统上 我安装了 python 2 7 3 并且希望收到有关 python 3 不兼容性的警告 因此 我的代码片段 tester py 好像 usr bin python