【Python】type(obj) vs.__class__和改变一个对象的类

Python有两种访问对象类型的方式。

一种是使用type(obj),另一种是使用obj.__class__。它们之间有什么区别呢?

在这个视频中,我们看到它们大多数情况下是相同的(你可能不需要太担心),但是有一个区别在于类有可能通过拦截对__class__的访问来欺骗自己的类型。

而内置的type函数则总是会给出对象的真实类型。

然而,如果一个类试图欺骗自己的类型,可能是因为它有一个合理的理由,这意味着你可能更倾向于使用__class__。

另外,还可以在对象创建后在运行时修改对象的__class__,这将真正改变对象的类型,使得type(obj)和obj.__class__都报告新的类型。

这里有一些限制(使用案例有些可疑!),但是知道这一点是好的,以防你觉得有些奇怪的事情发生了

源地址:https://youtu.be/5vpdzRbfTIM