为什么Python中自定义类的类型是<class 'type'>?
Python类的类型为
<class 'type'>的问题说明 测试代码
class Hello: pass c = Hello print('type check one: ', type(c)) print('type check two: ', type(Hello))
运行输出
type check one: <class 'type'> type check two: <class 'type'>
原因解释
- Python 中所有元素都是对象,你自定义的类本身也属于对象的一种,这类用来生成实例的类对象,由元类负责创建,Python 默认使用的元类就是
type,因此所有类本身的类型查询结果都是<class 'type'>。 - 代码中
c = Hello只是给Hello对应的类对象新增了一个变量引用,二者指向同一个内存地址的类对象,所以两次type查询结果完全一致。 - 你平时使用
class关键字定义类的写法,本质是type创建类对象的语法糖,和直接执行Hello = type('Hello', (), {})效果完全相同,type的三个入参分别对应类名、继承的父类元组、类的属性字典。
补充验证
如果你实例化Hello类得到实例对象,再查询实例的类型,就会得到类名返回:
obj = Hello() print(type(obj)) # 输出:<class '__main__.Hello'>
内容的提问来源于stack exchange,提问作者Rasheed kotoor
相关产品推荐
相关产品推荐

