You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中instance.__class__是什么?类实例类型疑惑解析

关于Python类与实例的核心疑问解答

先明确核心概念,再逐个拆解你的代码输出:

核心结论

account.__class__ 就是Account类本身,并非特殊子类——Python中任何类都是它自身的子类,而类本身是元类type的实例,不是自己的实例。

逐个分析代码输出

四个打印语句本质是在区分类的继承关系和实例与类的归属关系:

  1. print(issubclass(Account.__class__, type)) # True

    • Account.__class__是type(默认元类为type),type是自身的子类,因此返回True。
  2. print(issubclass(account.__class__, Account)) # True

    • account.__class__指向Account类,Python规定issubclass(X, X)始终返回True——类被视为自身的子类,这是语言定义的规则。
  3. print(isinstance(Account.__class__, type)) # True

    • Account.__class__是type,而type是自身的实例,所以返回True。
  4. print(isinstance(account.__class__, Account)) # False

    • account.__class__是Account类本身,Account的实例是像account这样通过Account(10)创建的对象,类本身不属于自己的实例范畴,它是元类type的实例。

补充说明

你提到的__build_class__和__metaclass__,核心作用是控制类的创建过程:默认情况下Python用type作为元类生成自定义类,因此所有自定义类都是type的实例;而类的实例(如account)由类本身创建,它们的__class__属性指向创建自己的类。

简单总结:

  • 类(如Account)是元类(type)的实例
  • 类的实例(如account)是类的实例
  • 任何类都是自身的子类,但类不是自身的实例

内容的提问来源于stack exchange,提问作者Natan Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:55:20