Python type() 函数
type() 是 Python 中用于获取对象类型的内置函数。
type() 是 Python 中最常用的函数之一,可以帮助我们了解对象的类型,是动态类型语言中非常重要的工具。
单词释义: type 意为"类型",用于获取对象的类型信息。
基本语法与参数
语法格式
type(object) type(name, bases, dict)
参数说明
- 参数 object:
- 类型: 任意对象
- 描述: 要获取类型的对象。
- 参数 name, bases, dict:
- 类型: 字符串、类元组、字典
- 描述: 用于动态创建类。
函数说明
- 返回值: 返回对象的类型(一个 type 对象)。
实例
示例 1:获取对象类型
实例
# 获取基本类型的类型
print(type(123)) # 输出: <class 'int'>
print(type(3.14)) # 输出: <class 'float'>
print(type("hello")) # 输出: <class 'str'>
print(type(True)) # 输出: <class 'bool'>
print(type([1, 2, 3])) # 输出: <class 'list'>
print(type({"a": 1})) # 输出: <class 'dict'>
print(type((1, 2))) # 输出: <class 'tuple'>
print(type({1, 2})) # 输出: <class 'set'>
# None 的类型
print(type(None)) # 输出: <class 'NoneType'>
print(type(123)) # 输出: <class 'int'>
print(type(3.14)) # 输出: <class 'float'>
print(type("hello")) # 输出: <class 'str'>
print(type(True)) # 输出: <class 'bool'>
print(type([1, 2, 3])) # 输出: <class 'list'>
print(type({"a": 1})) # 输出: <class 'dict'>
print(type((1, 2))) # 输出: <class 'tuple'>
print(type({1, 2})) # 输出: <class 'set'>
# None 的类型
print(type(None)) # 输出: <class 'NoneType'>
运行结果预期:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'list'> <class 'dict'> <class 'tuple'> <class 'set'> <class 'NoneType'>
代码解析:
type()返回对象的类型对象。- 每个类型本身也是 type 类的实例。
示例 2:比较类型
实例
# 直接比较
value = 42
print(type(value) == int) # 输出: True
print(type(value) == str) # 输出: False
# 使用 isinstance(推荐)
print(isinstance(42, int)) # 输出: True
print(isinstance("hello", str)) # 输出: True
print(isinstance(42, (int, float))) # 输出: True
# 检查自定义类
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # 输出: True
print(type(dog) == Cat) # 输出: False
print(isinstance(dog, Dog)) # 输出: True
value = 42
print(type(value) == int) # 输出: True
print(type(value) == str) # 输出: False
# 使用 isinstance(推荐)
print(isinstance(42, int)) # 输出: True
print(isinstance("hello", str)) # 输出: True
print(isinstance(42, (int, float))) # 输出: True
# 检查自定义类
class Dog:
pass
class Cat:
pass
dog = Dog()
print(type(dog) == Dog) # 输出: True
print(type(dog) == Cat) # 输出: False
print(isinstance(dog, Dog)) # 输出: True
运行结果预期:
True False True True True True False True
代码解析:
- 可以使用
type() ==进行精确类型比较。 - 但更推荐使用
isinstance(),因为它支持继承。
示例 3:动态创建类
实例
# 使用 type() 动态创建类
Person = type("Person", (), {
"name": "未知",
"age": 0,
"greet": lambda self: f"你好,我是 {self.name}"
})
# 使用动态创建的类
p = Person()
p.name = "Tom"
print(p.name) # 输出: Tom
print(p.greet()) # 输出: 你好,我是 Tom
# 创建带继承的类
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "汪汪!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "汪汪!"
})
dog = DogClass()
print(dog.speak()) # 输出: 汪汪!
print(isinstance(dog, Animal)) # 输出: True
Person = type("Person", (), {
"name": "未知",
"age": 0,
"greet": lambda self: f"你好,我是 {self.name}"
})
# 使用动态创建的类
p = Person()
p.name = "Tom"
print(p.name) # 输出: Tom
print(p.greet()) # 输出: 你好,我是 Tom
# 创建带继承的类
class Animal:
def speak(self):
return "..."
class Dog(Animal):
def speak(self):
return "汪汪!"
DogClass = type("DogClass", (Animal,), {
"speak": lambda self: "汪汪!"
})
dog = DogClass()
print(dog.speak()) # 输出: 汪汪!
print(isinstance(dog, Animal)) # 输出: True
运行结果预期:
动态创建类在实际编程中较少使用,但理解这一点对metaclass编程很重要。
type() 是 Python 中最基础和重要的函数之一。
Python3 内置函数
点我分享笔记