2016-12-09 28 views
5

私はsphinxのドキュメンテーションのページを読んでいて、皮肉なことに、var、ivar、cvarの違いに関するドキュメントが非常に不足していることがわかりました。インラインコードの異なる名前空間の違いを誰かが説明できるかどうか疑問に思っていました。pythonのスフィンクスでvar、cvar、ivarの違いは何ですか?

例:

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

どのようにこれらのスフィンクスのタグのそれぞれが互いに異なっているとどのように私が設計通りに正しく使用するための正しいものである1知っているのですか?ドキュメントがあることを示しているので、

答えて

1

はたぶん、thesr特定のタグの区別を心配し、単にあなたがすべてでそれを使用する必要がある場合は、「VAR」を使用してに固執していない:

他の多くの情報フィールドがありますが、それらは冗長かもしれません: ...(含む)... var、ivar、cvar:変数の説明。 ...

参照:

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

+1

は、「他の多くの情報のフィールドがありますが、彼らは冗長かもしれ」。私はそれが非常にうまくいくかもしれないが、理にかなっていないので、ほとんどそれを信じていない。 これを確認できるその他のリードはありますか? –

8

varはもちろん、一般的な変数です。これは、文書化している変数をさらに区別する必要がない場合に使用します。

ivarは「インスタンス変数」、またはインスタンスオブジェクト(クラスのインスタンス)に設定された変数です。通常、これらは、__init__メソッドの中で(Pythonで)定義されます。

cvarは、「クラス変数」、またはクラスオブジェクトに直接設定される変数です。通常、これはクラスステートメント内で設定されますが、クラス内の特定のメソッドの外側に設定されます。ここで

は例です:私は、これは、彼らが冗長だったかどうかのより具体的なだったことを望む

class SomeClass(object): 

    cvar = 'I am a class variable' 

    def __init__(self): 
     self.ivar = 'I am an instance variable' 
関連する問題