【问题标题】:Python: Customize docstring for individual objects of same class?Python:为同一类的单个对象自定义文档字符串?
【发布时间】:2019-08-06 18:38:12
【问题描述】:

在我的项目中,我有很多相同类型变量的实例,但用途不同。我希望能够使用 python 帮助系统向用户提供有关每个对象的功能的信息。即时自定义文档或任何其他帮助系统的最佳方式是什么?我希望能够做这样的事情:

a = myClass()
b = myClass()
a.__doc__ = "this is instance a and does something."
b.__doc__ = "this is instance b. It does something else."

...

>>> help(a)
"this is instance a and does something."
>>> help(b)
"this is instance b. It does something else."

但是,更改对象实例上的__doc__ 似乎没有任何作用。

是否可以在 python 中执行此操作,或者我需要编写自己的帮助函数?谢谢!

【问题讨论】:

  • 这听起来应该是两个不同的类,或者是同一个类的子类。如果我们举一个现有的例子:a=str(); b=str()。您是否希望 ab 做不同的事情,或者在给定相同输入时采取不同的行动?
  • 实例通常应该只因它们的状态而不同。所以 a 和 b 应该做同样的事情,只对其他目标。如果两者明显不同,为什么不把它们分成不同的类呢?
  • 除非myClass 是一个生成类(例如参数化类)的函数,否则上述 cmets 是一种可行的方法。将它们拆分为单独的类或让它们的行为相同。
  • @G.Anderson 抱歉,我不清楚。这些类做的事情完全相同,但它们的用法可能不同。例如,它们可能都是控制两个不同参数的整数。

标签: python docstring


【解决方案1】:

__doc__ 仅适用于类,不适用于实例。我认为在这种情况下最好的办法是为每个实例创建一个唯一的属性并将文档字符串存储在那里

【讨论】:

    【解决方案2】:

    __doc__ 主要仅用于函数和类定义,但如果您想显示有关实例的信息,则需要为其编写一个小函数,或者只是 print(a.__doc__)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多