Python 中保存另一个变量类型信息的变量,其自身是什么类型?
数据小陈
结论
如果保存的是 int 这样的类型对象,它自身的类型是 type。例如,saved_type = int 保存的是 int 类对象,type(saved_type) 的结果是 type。
在 Python 中,类型也是对象,变量名引用对象。
如何获取并保存类型
用 type() 获取对象的类型,再将结果赋给另一个变量:
value = 42
saved_type = type(value)
print(saved_type) # <class 'int'>
print(type(saved_type)) # <class 'type'>
print(saved_type is int) # True
这里有两层关系:
value引用整数对象42,这个对象的类型是int。saved_type引用类对象int,这个类对象的类型是type。
Python 中的类也是对象。创建类的类称为元类,type 是通常使用的元类。int 这样的类对象也有自己的类型。
类型对象与类型名称字符串有什么区别?
int 和 'int' 是不同的对象:前者是类型对象,后者是字符串。
saved_type = int
saved_name = 'int'
print(type(saved_type)) # <class 'type'>
print(type(saved_name)) # <class 'str'>
如果只想获取类型名称,可以使用 type(value).__name__,得到的是字符串:
name = type(value).__name__
print(name) # int
print(type(name)) # <class 'str'>
需要保留类型本身时,保存 type(value);只需要显示名称时,可以保存 type(value).__name__。
适用范围
上述结论适用于 int、str 等常见内置类型。对于使用自定义元类的类,类对象自身的类型可能是该自定义元类,可以通过 type(saved_type) 查看。
备注:内容仅供参考。
