【问题标题】:Properly document a constructor passed as parameter正确记录作为参数传递的构造函数
【发布时间】:2017-10-25 14:02:59
【问题描述】:

我试图弄清楚记录接收类构造函数作为参数的函数的正确方法是什么。我使用的是 Google 风格的文档字符串。

例子:

class MyClass:
    def __init__(self):
        ...

def my_func(param1, class_constructor):
"""Example function.

Args:
    param1 (int): ...
    class_constructor (???): My class constructor.
"""
    class_instance = class_constructor()
    ...

my_func(12, MyClass)

【问题讨论】:

  • 在这种情况下什么是“类构造函数”?不就是一堂课吗?
  • 确实只是一门课
  • 实际上,这应该可能只接受任何可调用的 - 没有理由将其限制为 class 对象(除非代码中的其他内容要求它是一个类,但这似乎不是sn-p 中的大小写)。

标签: python documentation docstring google-style-guide


【解决方案1】:

如果我理解正确,你想知道用什么替换???在你的例子中。正如原始问题的 cmets 所指出的,您的 class_constructor 参数实际上应该是一个类,因此适当的类型应该是 type(忽略旧式类)。

【讨论】:

  • 由于相同的代码只适用于任何可调用对象,并且使用普通函数作为工厂或使用类方法作为替代构造函数是常见模式,我将其记录为“可调用返回对象"。
  • 任何具有__call__ 方法的对象都是可调用的。有一个名为callable 的内置函数可以检查此方法是否存在,但没有那种类型的整体类型(如果我错了,请纠正我)。可调用对象可以是函数、类实例,也可能是我现在没有想到的其他对象。
猜你喜欢
  • 2015-08-02
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多