【问题标题】:How to dynamically print a docstring in Python 3.6.1?如何在 Python 3.6.1 中动态打印文档字符串?
【发布时间】:2018-03-16 23:14:49
【问题描述】:

在阅读一些 Python 培训书籍时,我对对象进行了一些修改,例如打印常见对象和属性的文档字符串。

考虑以下返回的字符串列表:

dir(str)

我正在尝试遍历上述内容,以便使用以下循环动态打印存储在 dir 列表中的属性的文档字符串:

for item in dir(str):
    print(item.__doc__)

这将返回 str 对象的 dir 输出,而不是它的属性,这不是我想要的。如何动态打印填充由 dir 方法生成的列表的所有属性的文档字符串?

编辑:这不是另一个question 的副本。 至少对我来说,使用“枚举”这个词非常具有误导性,所以我会说这个问题的标题不正确,事实上我花了很多时间寻找解决方案,但没有任何搜索查询返回。

【问题讨论】:

  • 至少对我来说,使用“枚举”这个词非常具有误导性,所以我会说这个问题的标题不正确,事实上我花了很多时间寻找解决方案,但没有返回任何搜索查询那

标签: python python-3.x dynamic printing docstring


【解决方案1】:

不要使用dir,它只是为您提供属性名称,而是使用vars - 这为您提供了实际方法对象的名称字典。

for name, method in vars(str).items():
    print(name, method.__doc__)

【讨论】:

  • 感谢这项工作以及来自 khelwood 的回复。我发现没有必要调用这本字典,因为你得到了相同的结果:for item in dir(var): print(item, '\n', getattr(str, item).__doc__) 非常感谢。话虽这么说,在您看来,我还应该选择 dict 方式吗?
【解决方案2】:

您可以使用getattr(obj, attr) 从对象中获取命名属性。

for item in dir(str):
    print(getattr(str, item).__doc__)

【讨论】:

  • print(len(vars(str))) --> 68,print(len(dir(str)))-->76,这个比较全
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
  • 2019-04-24
  • 2011-10-17
  • 2018-06-13
相关资源
最近更新 更多