【问题标题】:numpydoc conventions: method modifies class but returns nothingnumpydoc 约定:方法修改类但不返回任何内容
【发布时间】:2016-06-03 21:08:15
【问题描述】:

关于 numpydoc 文档字符串约定的问题:

我有一个类,其中包含许多不返回任何内容的方法,但为该类添加了一个属性。例如:

class MyClass(object):
    def __init__(self, a, b):
         self.a = a
         self.b = b
         return

    def a_mult(self, mult):
        """
        Multiplies `a` by `mult`.

        Parameters
        ----------
        mult : float
            Value to multiply `a` by.

        Returns
        -------
        None
        """
        self.product = a * mult
        return

在这个笨拙的例子中,MyClass.a_mult 不返回任何内容,而是为MyClass 添加了一个属性。

我在numpydoc 样式指南之后包含了MyClass.a_mult 的文档字符串。文档字符串指出该方法返回无,但我看不到记录MyClass.a_mult 方法如何修改MyClass 实例的标准方式。

提前感谢您的帮助!

【问题讨论】:

  • 一般来说,如果它在类上设置一个属性(product),我会调用方法set_product...
  • “我有一个类,其中包含许多不返回任何内容的方法,但为该类添加了一个属性。” - 这是非常不寻常的,通常是一个糟糕的设计。它使你的 API 变得一团糟,并且与 Python 3 的拆分表实例字典优化相混淆。
  • 我也同意@user2357112——应该非常谨慎地使用setter。如果用户想要设置产品属性,他们通常可以这样做my_class.product = my_class.a * mult
  • 谢谢@mgilson - 我仍然在掌握课程以及应该如何使用它们!目前,我有一个类,其中包含一些需要在几个顺序步骤中处理的数据。该类有几个函数,每个函数都对数据执行操作,并将其存储在一个新的类属性中。然后序列中的下一个函数对新创建的属性进行操作。有没有更好/更蟒蛇的方式来做到这一点?
  • 只看那个描述,在我看来这个类可能是不必要的......只需使用接受他们需要的数据并返回处理结果的函数。

标签: python numpy docstring numpydoc


【解决方案1】:

遵循@mgilson 和@user2357112 的有用建议,我意识到我的课程设计不佳。我已经改变了数据分析的所有阶段都存储在一个字典中。分析函数现在向字典添加元素,而不是向类实例添加新属性。

感谢指点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 2020-01-26
    • 2018-10-21
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    相关资源
    最近更新 更多