Python中的弃用警告,在这里有意义吗?
Posted
技术标签:
【中文标题】Python中的弃用警告,在这里有意义吗?【英文标题】:Deprecation warning in Python, does it make sense here? 【发布时间】:2020-03-18 23:54:11 【问题描述】:我正在为我的项目编写一个 Python(使用 3.8.2 版本)应用程序。在应用程序中,我使用 PySide2 创建名为 items_tableWidget 的 QTableWidget 对象。这是我的代码片段,它创建 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 中的弃用警告