python - 如何区分用户定义的类和 Python 3 中的内置类?
问题描述
我正在将一些 Python 2 代码移植到 3。有一个部分依赖于了解对象是用户定义类的实例还是内置类。使用的 Python 2 代码:
isinstance(my_object.__class__, Types.ClassType)
python modernize 建议将“Types.ClassType”更改为“type”。这对我不起作用,因为所有对象都返回 true,我们是“类型”。根据我对类和 Python 3 的了解,内置类和用户定义类之间不再有区别。我已经做了几乎一整天的研究,却一无所获。我不敢相信我是这种情况下唯一的人,但也许我没有寻找正确的短语......
所以我的问题是,是否可以区分,或者我是否需要重构代码以便无关紧要?
解决方案
您可能误解了上下文。该检查不适用于检测用户定义的类或内置类之间的差异。这是检测旧式类之间的差异:
class A:
pass
和新型类:
class B(object):
pass
在 Python 3+ 中,不再有任何旧式类,一切都继承自object
您是否要求。因此,您将需要重写或删除任何针对旧式类的特殊代码。
推荐阅读
- .net - .Net CAD 2014,自定义功能区菜单无法显示
- javascript - 我正在从 API 接收一些文本形式的数据,这些数据在 ReactJS 环境中嵌入了 HTML 标记。我想将该文本转换为 HTML
- visual-studio - 嘿,我有 2 个 [not_required_arguments] 问题 1 在返回 MaterialApp( 另一个在 Scaffold(
- regex - 如何将内容与正则表达式匹配
- android - 如何在 Delphi Firemonkey / Android 应用程序中为 TRectangle 添加触摸效果?
- .net - “obj”文件夹的“.resources”和“.cache”文件是什么?(VB.NET)
- javascript - 包含固定单元格引用的触发器未触发
- django - 此数据库后端不支持 DISTINCT ON 字段
- shell - 使用 sed 替换动态变化的正则表达式
- vba - 检索特定记录,然后在 vba 访问中转到下一个