You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python类的方法内部访问模块的文档字符串(docstring)

如何在类方法内部访问模块的文档字符串

在方法内部,__doc__会优先指向当前方法的文档字符串,要访问模块级别的__doc__,可以用以下几种实用方式:

方法一:通过sys.modules获取当前模块引用

导入sys模块后,利用sys.modules[__name__]获取当前模块对象,再访问它的__doc__属性,这是最通用的方式,不管模块文件名是什么都能生效:

"""Module documentation."""
import argparse
import sys

class HandleArgs:
    """Class documentation"""
    def __call__(self):
        """Method documentation"""
        # 访问模块的文档字符串
        module_doc = sys.modules[__name__].__doc__
        parser = argparse.ArgumentParser(description=module_doc)

方法二:在模块级别存储文档字符串

直接在模块顶部把__doc__赋值给一个变量,后续在方法里直接引用这个变量,写法更直观:

"""Module documentation."""
import argparse

# 把模块文档字符串存到变量里
MODULE_DOC = __doc__

class HandleArgs:
    """Class documentation"""
    def __call__(self):
        """Method documentation"""
        parser = argparse.ArgumentParser(description=MODULE_DOC)

方法三:直接引用模块名(如果已知)

如果明确知道当前模块的名称(比如模块文件名为args_handler.py),可以直接用模块名访问__doc__,但这种方式灵活性差,模块重命名后需要同步修改代码:

"""Module documentation."""
import argparse
import args_handler  # 导入自身模块

class HandleArgs:
    """Class documentation"""
    def __call__(self):
        """Method documentation"""
        parser = argparse.ArgumentParser(description=args_handler.__doc__)

另外注意你的原代码存在语法错误:class HandleArgs()需修正为class HandleArgs:(无继承时无需括号),def __call__()需修正为def __call__(self):(类方法必须包含self参数),上面的示例已同步修正这些问题。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:42:27