python的狮身人面像中的var、cvar和ivar有什么区别?

What is the difference between var, cvar and ivar in python's sphinx?

我在阅读 sphinx 文档页面时讽刺地发现,关于 var、ivar 和 cvar 之间区别的文档非常缺乏。我想知道是否有人可以解释内联代码中每个不同名称空间之间的区别。

示例:

class foo(object):
    """
      :var str first:
      :ivar str last:
      :cvar str middle:
    """

这些 sphinx 标签之间的每一个有何不同?我如何知道哪一个是正确的,可以按设计正确使用?

也许不必担心这些特定标签之间的区别,如果您需要使用它,只需坚持使用 'var',因为文档表明:

还有许多其他信息字段,但它们可能是多余的: ...(包括)... var, ivar, cvar:变量的描述。 ...

参见:

http://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html

var 当然是通用变量。当您不想对正在记录的变量做任何进一步区分时使用它。

ivar 是一个 "instance variable",或者是在实例对象(class 的一个实例)上设置的变量。通常这些将在 __init__ 方法中定义(在 Python 中)。

cvar 是一个 "class variable",或者直接在 class 对象上设置的变量。通常,这将在 class 语句内设置,但在 class.

中的任何特定方法之外

这是一个例子:

class SomeClass(object):

    cvar = 'I am a class variable'

    def __init__(self):
        self.ivar = 'I am an instance variable'