python中的ClassName是否引用了两个对象



考虑一个简单的类:

class A:
a=98

当我定义类A时,"type"类将创建一个对象,该对象将是我们的类,因为"type"是元类。现在,根据python文档,当我们离开类定义(通过末尾(时,会创建一个类对象,并将该对象绑定到ClassName(在我们的情况下是a(。那么,名称"A"是指两个对象吗?i(由"类型"元类创建的对象,即类本身;ii(类对象

如果A指的是*class对象*,那么哪个名称指的是"type"元类创建的对象还是类本身

(对象(和类型在Python 3(您引用了该文档(中是相同的,因此在您的示例中Atype创建的类。您可以将A称为类型或类,但它是同一个对象。

在您链接到的Python 3文档中,我们还阅读了:

每个值都是一个对象,因此都有一个(也称为其类型(。它被存储为object.__class__

。。。断言这两个术语指的是同一件事。另请参阅该文件中的以下引文:

使用isinstance()检查实例的类型:只有当obj.__class__int或从int派生的某个类时,isinstance(obj, int)才会是True

最新更新