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

Rus*_*ber 8 python python-sphinx

我正在阅读sphinx文档页面,具有讽刺意味的是,关于var,ivar和cvar之间差异的文档非常缺乏.我想知道是否有人可以解释内联代码中每个不同名称空间之间的区别.

例:

class foo(object):
    """
      :var str first:
      :ivar str last:
      :cvar str middle:
    """
Run Code Online (Sandbox Code Playgroud)

这些狮身人面像标签中的每一个如何彼此不同,我如何知道哪一个是正确使用的设计?

Kev*_*orn 11

var当然是一个通用变量.如果您不想进一步区分要记录的变量,请使用此选项.

ivar是一个"实例变量",或在实例对象(类的实例)上设置的变量.通常,这些将在__init__方法内部(在Python中)定义.

cvar是一个"类变量",或直接在类对象上设置的变量.通常,这将在类语句中设置,但在类中的任何特定方法之外.

这是一个例子:

class SomeClass(object):

    cvar = 'I am a class variable'

    def __init__(self):
        self.ivar = 'I am an instance variable'
Run Code Online (Sandbox Code Playgroud)