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

为什么Python中type()对变量、类的返回及打印表现存在差异?

核心问题解答:为什么type(bobo)返回的是type

这是Python的核心设计规则:Python中一切皆对象,类本身也属于对象。
你自定义的bobo类,本质上是type类的一个实例。type是Python默认的元类,所有普通类都是通过type实例化得到的,所以所有普通类的类型默认都是type。对应到你的测试代码逻辑是统一的:

  • 普通实例b = bobo()的类型是它所属的类bobo,和type(mystring)返回str(字符串类)的逻辑完全一致
  • 类bobo作为对象,它的类型是创建它的元类type,你可以额外测试type(str)、type(int),返回的结果也都是type,和type(bobo)的结果完全一致。

直接执行表达式和print输出结果不一致的原因

这是Python交互环境(含Jupyter)的展示规则差异,两种展示对应的实际值完全相同:

  • 直接在交互环境输入表达式并回车,输出的是对象的__repr__()方法返回的字符串,是面向开发者的精确表示,所以你直接输入type(b)会看到<class '__main__.bobo'>,输入type(bobo)会看到type
  • 调用print()函数时,输出的是对象的__str__()方法返回的字符串,是面向普通阅读者的简化表示,所以print(type(b))会输出__main__.bobo,print(type(bobo))会输出<class 'type'>
    你可以自行验证:执行type(b) == bobo、type(bobo) == type,返回结果都是True,说明两种展示形式对应的实际值完全一致,仅展示格式不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:24:03