Python中的弃用警告,在这里有意义吗?

Posted

技术标签:

【中文标题】Python中的弃用警告,在这里有意义吗?【英文标题】:Deprecation warning in Python, does it make sense here? 【发布时间】:2020-03-18 23:54:11 【问题描述】:

我正在为我的项目编写一个 Python(使用 3.8.2 版本)应用程序。在应用程序中,我使用 PySide2 创建名为 items_tableWidgetQTableWidget 对象。这是我的代码片段,它创建 QTableWidgetItem 对象,用我的数据填充它们,使用户无法编辑它们并将它们放入表中:

cell = QtWidgets.QTableWidgetItem()
cell.setData(Qt.DisplayRole, data)
cell.setFlags(cell.flags() & ~Qt.ItemIsEditable)
ui.items_tableWidget.setItem(row_number, column_number, cell)

我在运行代码时收到此警告:

C:\Users\Deronek\Documents\Qt\SkyblockBazaar\main.py:346: DeprecationWarning: an integer is required (got type PySide2.QtCore.Qt.ItemFlags).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
  cell.setFlags(cell.flags() & ~Qt.ItemIsEditable)

我是 Python 的新手,但我认为这个警告没有意义,因为 setFlags 参数,以及 flags() 返回值和 ItemIsEditable 枚举值都在 Qt 命名空间中定义了类型和运算符,所以我没有执行隐式转换。我是对的还是我遗漏了什么?

感谢您的回答。

【问题讨论】:

【参考方案1】:

在 Python 3.8 中有 the following change:

int、float 和 complex 的构造函数现在将使用 __index__() 特殊方法,如果可用和相应的方法 __int__(), __float__() 或 __complex__() 不可用。 (由 Serhiy Storchaka 在 bpo-20092 中提供。)

并且 PySide2 使用整数来映射枚举,并且已经报告了 PYSIDE-1226。正如他们在下一版本的 cmets 中指出的那样,该警告将不再发布。

一般来说,您应该没有问题,只会收到烦人的警告。

【讨论】:

以上是关于Python中的弃用警告,在这里有意义吗?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn MiniBatchKMeans 中的弃用警告

节点 js 应用程序中的弃用警告

节点 js 应用程序中的弃用警告

关闭 PHP.ini 文件 WAMP 中的弃用警告

Mac Catalyst 中的弃用警告,但仅在 Objective-C 中,而不是在 Swift 中

sklearn 的弃用警告