怎么查看Python内置数据类型支持的方法和属性

Mason
Mason
发布时间:2026-10-20| 6人浏览过
原创

在 Python 开发中,内置数据类型(如 str、list、dict、set 等)提供了极为丰富的功能接口。要查看这些数据类型支持的方法和属性,最直接、可靠的原生方式是:使用 dir() 函数列出属性名称、使用 help() 函数查阅详细交互文档、通过 .__doc__ 属性直接读取单项说明,或在工程化场景中调用标准库 inspect 模块进行精准过滤。掌握这些自省(Introspection)工具,开发者无需离开终端或翻阅网页手册,便能快速明确对象的可用能力与传参规则。

怎么查看Python内置数据类型支持的方法和属性
图 1:查看 Python 内置数据类型方法与属性的标准四步工作流

一、使用 dir() 快速获取所有支持的属性与方法

dir() 是 Python 最常用的内置自省函数之一。当传入一个对象或数据类型作为参数时,它会返回该对象支持的所有有效属性和方法名称的字符串列表(按字母字典序升序排列)。

1. 传入类型名称与传入实例的区别

对于 Python 内置数据类型,既可以直接传入类型本身(如 dir(list)),也可以传入该类型的具体实例(如 dir([]))。两者对于内置类型所返回的方法列表几乎完全相同:

# 传入类型名称本身(类级别查看)
list_attrs_class = dir(list)

# 传入空列表实例(实例级别查看)
list_attrs_inst = dir([])

# 验证两者包含的内容是否一致
print(list_attrs_class == list_attrs_inst)  # 输出: True

这种一致性意味着在探索内置数据类型时,无需预先构造复杂的实例对象,直接将内置类型名传给 dir() 即可开始排查。

2. 编写列表推导式过滤私有魔术方法

在默认情况下,直接调用 dir(str) 会打印出大量以双下划线开头和结尾的名称(如 __add__、__init__、__len__ 等),这类方法被称为特殊方法或魔术方法(Dunder Methods)。如果只关心平时在代码中直接调用的常规业务方法,可以使用列表推导式将它们过滤掉:

# 过滤掉所有以单下划线或双下划线开头的私有/特殊属性
public_str_methods = [item for item in dir(str) if not item.startswith('_')]
print("字符串公共方法总数:", len(public_str_methods))
print("部分公共方法:", public_str_methods[:10])
示例运行结果 字符串公共方法总数: 47
部分公共方法: ['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map']
怎么查看Python内置数据类型支持的方法和属性
图 2:Python 内置数据类型的成员属性构成与功能分类体系

二、使用 help() 查阅方法的使用说明与签名

dir() 只能列出名称,无法得知方法需要传入哪些参数、是否有默认值以及具体执行什么操作。此时可以使用 Python 内置的 help() 函数来调出交互式文档系统。

1. 查看整个数据类型的全量文档

如果希望系统学习某个类型的全貌,可以向 help() 传入类名:

# 启动内置 pager 查阅字典的完整说明
help(dict)

在标准命令行终端中运行上述命令后,终端会进入分页阅读模式(类似 Linux 的 less 命令):

  • 按 Space 键向下翻页;
  • 按 Enter 键向下单行滚动;
  • 按 b 键向上翻页;
  • 按 q 键退出帮助模式并返回 Python 交互提示符。

2. 精准查看具体某一方法的签名与说明

在绝大多数开发场景中,通篇翻阅整个类文档效率较低,更实用的做法是只传入特定方法(例如 help(str.split) 或 help(list.sort)):

# 查看字符串的 split 方法
help(str.split)
示例运行结果 Help on method_descriptor:

split(self, /, sep=None, maxsplit=-1)
    Return a list of the substrings in the string, using sep as the delimiter string.

      sep
        The delimiter according which to split the string.
        None (the default value) means split according to any whitespace.
      maxsplit
        Maximum number of splits to do.
        -1 (the default value) means no limit.
注意事项:传给 help() 的参数是函数或方法对象本身,不要在方法后加括号。如果写作 help(str.split()),Python 会先尝试执行该方法,因缺少必要实例或参数而直接报 TypeError 错误。

3. 读取属性自带的 __doc__ 字符串

help() 底层是基于对象的 __doc__ 属性进行排版渲染的。如果是在非交互式的脚本运行环境中,或者需要将说明文本赋值给变量保存,可以直接读取该属性:

# 直接打印方法的内置文档字符串
print(dict.get.__doc__)

三、深入底层:自省机制与属性查找原理

为什么 dir()、help() 和 __doc__ 能够准确获知数据类型的全部细节?这是因为 Python 是一门完全面向对象且支持高度“自省”(Introspection)的语言。每个内置类型内部都维护了严格的元数据结构与方法解析顺序(Method Resolution Order, MRO)。

怎么查看Python内置数据类型支持的方法和属性
图 3:Python 内置类型自省机制与属性查找流转过程

四、工程化自省:使用 inspect 模块进行精准过滤

当需要编写自动化分析脚本、生成接口清单,或希望以编程方式区分“可调用方法”与“普通属性”时,Python 标准库提供的 inspect 模块是最严谨的工具。

1. 提取所有可调用的方法(Callable)

inspect.getmembers() 函数接收待检查对象和一个判定谓词(Predicate 函数),仅返回满足条件的成员(以 (属性名, 属性值) 二元组呈现):

import inspect

# 获取字典 (dict) 所有可直接调用的公共方法
dict_methods = [
    name for name, member in inspect.getmembers(dict, predicate=callable)
    if not name.startswith('_')
]

print("dict 的公开方法列表:")
print(dict_methods)
示例运行结果 dict 的公开方法列表:
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

2. 编写通用的数据类型方法检查辅助函数

结合 inspect 和 __doc__,可以封装一个简洁实用的内省小工具,在日常开发中随时打印任何内置类型的公共方法及其第一行摘要说明:

import inspect

def inspect_builtin_type(type_obj):
    """打印指定类型的公共方法名称及简明说明"""
    print(f"=== {type_obj.__name__} 支持的公共方法与说明 ===")
    members = inspect.getmembers(type_obj, predicate=callable)
    
    for name, func in members:
        if name.startswith('_'):
            continue
        # 获取文档的第一行摘要
        doc = getattr(func, '__doc__', '') or ''
        first_line = doc.strip().split('\n')[0] if doc else "无文档说明"
        print(f"{name:<12} : {first_line}")

# 测试集合 (set) 类型
inspect_builtin_type(set)
示例运行结果 === set 支持的公共方法与说明 ===
add : Add an element to a set.
clear : Remove all elements from this set.
copy : Return a shallow copy of a set.
difference : Return the difference of two or more sets as a new set.
discard : Remove an element from a set if it is a member.
intersection : Return the intersection of two sets as a new set.
pop : Remove and return an arbitrary set element.
remove : Remove an element from a set; it must be a member.
union : Return the union of sets as a new set.

五、常用交互式开发环境中的高效查看技巧

除了纯 Python 代码层面的函数调用,现代交互式环境(如 IPython、Jupyter Notebook 以及各类主流 IDE)也提供了极佳的自省快捷操作:

  • IPython / Jupyter 中的 ? 操作符:在类型或方法后加上一个问号(如 str.replace?),直接弹窗显示函数签名和 Docstring;加上两个问号(如 func??)可尝试查看源码(纯 C 实现的内置方法则显示详细签名)。
  • Tab 键自动补全:在交互终端或 IDE 编辑器中,输入变量名和点号(例如 my_list.)后按下 Tab 键,环境会自动触发内省机制,弹出所有可用的候选方法下拉列表。
  • IDE 快捷文档悬浮:在 VS Code、PyCharm 等编辑器中,将鼠标光标悬停在内置类型或方法上,或按下对应的快捷键(VS Code 为 Ctrl+Space / Cmd+Hover),即可就地查阅内置类型的声明信息。

六、常见内置数据类型的方法特征速查

不同类型的内置数据类型,其支持的方法结构有明显的特征差异:

数据类型 可变性 标志性操作方法 不可用的操作
str (字符串) 不可变 split(), join(), replace(), strip(), find() 无就地增删方法(如 append/pop)
list (列表) 可变 append(), extend(), insert(), pop(), sort() 无法直接像字典一样调用 keys()
tuple (元组) 不可变 仅支持 count() 与 index() 两个公共方法 无任何增、删、修改元素的方法
dict (字典) 可变 get(), keys(), values(), items(), update() 无索引定位方法(不支持按数字序号切片)
set (集合) 可变 add(), remove(), union(), intersection() 元素无序,无下标索引与切片支持
怎么查看Python内置数据类型支持的方法和属性
图 4:Python 查看方法与属性的四种主流途径综合对比与选型指南

七、总结

查看 Python 内置数据类型支持的方法和属性,可以根据具体需求灵活选用对应工具:

  1. 快速唤醒记忆或检查方法名:直接执行 [m for m in dir(类型) if not m.startswith('_')],瞬间得到干净的公共方法清单;
  2. 确认函数传参、默认值与返回值:使用 help(类型.方法名) 或打印 类型.方法名.__doc__,快速阅读权威官方说明;
  3. 编写自动化脚本或动态构建功能:导入标准库 inspect 模块,通过 inspect.getmembers() 配合谓词进行可靠的程序化筛选。

借助这套自省工具链,无论是刚接触某个新类型的特性,还是在无网离线环境下进行排错开发,都能够从容、准确地探索并运用 Python 丰富的数据类型能力。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。