Python 获取对象信息
在 Python 中,当你拿到一个对象的引用时,可以通过以下方法来确定对象的类型以及查看它有哪些方法或属性。主要包括函数包括 type isinstance dir hasattr
1. 查看对象类型
使用内置函数 type()
或 isinstance()
来检查对象的类型:
isinstance(obj, class)
:检查对象是否是指定类型的实例。例如:
obj = [1, 2, 3]
print(isinstance(obj, list)) # 输出: True
print(isinstance(obj, dict)) # 输出: False
type(obj)
:返回对象的类型。例如:
obj = [1, 2, 3]
print(type(obj)) # 输出: <class 'list'>
2. 查看对象的方法和属性
使用以下方法可以列出对象的属性和方法:
- 返回列表中以双下划线
__
开头和结尾的是 Python 的魔术方法(特殊方法)。 - 其他的是常规方法或属性。
help(obj)
:提供对象的详细文档,包括类型、方法和属性的说明。
obj = [1, 2, 3]
help(obj) # 输出列表类型的详细文档
dir(obj)
:返回对象的所有属性和方法的列表,包括内置的和自定义的。
obj = [1, 2, 3]
print(dir(obj)) # 输出: ['__add__', ..., 'append', 'clear', 'copy', ...]
3. 检查特定方法或属性是否存在
使用 hasattr(obj, name)
检查对象是否具有某个方法或属性:
obj = [1, 2, 3]
print(hasattr(obj, 'append')) # 输出: True
print(hasattr(obj, 'keys')) # 输出: False
4. 动态获取对象信息
如果需要更深入的检查,可以使用 inspect
模块(适合高级用途):
import inspect
obj = [1, 2, 3]
# 获取所有方法
methods = [attr for attr in dir(obj) if inspect.ismethod(getattr(obj, attr))]
print(methods) # 输出: ['append', 'clear', 'copy', 'count', ...]
5. 注意事项
- 动态类型:Python 是动态类型语言,对象的类型和方法可能在运行时改变,因此总是建议在运行时检查。
- 自定义对象:如果对象是自定义类实例,
dir()
和help()
会显示类中定义的属性和方法。
示例:综合应用
obj = "Hello"
print(type(obj)) # 输出: <class 'str'>
print(isinstance(obj, str)) # 输出: True
print(dir(obj)[:2]) # 输出前2个属性/方法: ['__add__', '__class__']
print(hasattr(obj, 'upper')) # 输出: True
help(str.upper) # 查看 upper 方法的文档