在 Python 中,type() 是一个内置函数,主要用于获取对象的类型(即对象所属的类),它在调试、类型检查和元编程中非常有用。
基本用法
获取单个对象的类型
x = 42 print(type(x)) # 输出: <class 'int'> name = "Alice" print(type(name)) # 输出: <class 'str'> lst = [1, 2, 3] print(type(lst)) # 输出: <class 'list'>
获取类的类型
class MyClass:
pass
obj = MyClass()
print(type(obj)) # 输出: <class '__main__.MyClass'>
print(type(MyClass)) # 输出: <class 'type'>
注意:类本身也是对象,它的类型是
type(Python 中所有类的元类默认是
type)。
type() 的另一种用法:动态创建类
type() 还可以接受三个参数,用于动态创建类:
type(name, bases, dict)
- name:类名(字符串)
- bases:基类元组
- dict:类属性字典
示例:
# 动态创建一个名为 MyClass 的类,继承自 object,有一个属性 x = 10
MyClass = type('MyClass', (object,), {'x': 10})
obj = MyClass()
print(obj.x) # 输出: 10
print(type(obj)) # 输出: <class '__main__.MyClass'>
这相当于:
class MyClass:
x = 10
type() vs isinstance()
| 特性 | type() |
isinstance() |
|---|---|---|
| 用途 | 获取精确类型 | 检查是否为某类型或其子类 |
| 继承关系 | 不考虑继承 | 考虑继承 |
| 推荐场景 | 精确类型匹配 | 多态、继承体系中的类型检查 |
示例对比:
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(type(dog) == Animal) # False(精确类型不匹配)
print(isinstance(dog, Animal)) # True(考虑继承)
print(isinstance(dog, Dog)) # True
✅
最佳实践:在大多数情况下,推荐使用
isinstance()进行类型检查,因为它支持继承和多态。
常见用途
- 调试:快速查看变量类型
- 类型检查:结合
isinstance()或type() ==进行条件判断 - 元编程:动态创建类
- 日志记录:记录对象类型以便追踪问题
注意事项
type()返回的是<class 'xxx'>形式的类型对象。- 不要过度依赖
type()进行类型检查,优先使用isinstance()。 - 动态创建类时,确保基类和属性定义正确,否则可能引发错误。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476420.html



