【发布时间】:2023-04-03 07:53:01
【问题描述】:
我正在将一些 Python 2 代码移植到 3。有一个部分依赖于了解对象是用户定义类的实例还是内置类。使用的 Python 2 代码:
isinstance(my_object.__class__, Types.ClassType)
python modernize 建议将“Types.ClassType”更改为“type”。这对我不起作用,因为所有对象都返回 true,我们是“类型”。根据我对类和 Python 3 的了解,内置类和用户定义类之间不再有区别。我已经完成了几乎一整天的研究,但一无所获。我不敢相信我是唯一一个处于这种情况的人,但也许我没有找到正确的短语......
所以我的问题是,是否可以区分,还是我需要重构代码以使其无关紧要?
【问题讨论】:
-
为什么,确切地说,您需要这种区别?请注意,假设您使用了
import types
并且正在使用isinstance(my_object.__class__, types.ClassType)
,它不检查用户定义或内置。请注意,如果您使用用户定义的新样式类,则会返回 False。 -
根据这个测试,代码实际上做了什么不同的事情?如果可能会遇到一些有限的内置类型集,也许您可以反转测试 - 例如
not isinstance(my_object, (int, float, str))
。
标签:
python
python-3.x
class
types
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何区分用户定义的类和 Python 3 中的内置类? - Python技术站