2016-12-09 14 views
5

Sfenks belgeleme sayfalarını okuyordum ve ironik olarak var, ivar ve cvar arasındaki farkın belgelerinin eksik olduğunu buldum. Birinin satır içi koddaki farklı ad boşlukları arasındaki farkı açıklayabileceğini merak ediyordum.Python'un sfenksinde var, cvar ve ivar arasındaki fark nedir?

Örnek:

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

Nasıl birbirinden bu sfenks etiketlerin her biri farklı ve ben tasarlandığı gibi düzgün kullanılmak üzere doğru hangisinin nasıl anlarım?

cevap

1

Belki thesr belirli etiketler arasındaki ayrım konusunda endişelenmeyin ve basitçe belgeler olduğunu gösterir beri, hiç kullanmak gerekiyorsa 'var' kullanarak sopa:

diğer birçok bilgi alan vardır ama bunlar gereksiz olabilir: ... (dahil) ... var, ivar, cvar: Bir değişkenin açıklaması. ...

Bkz:

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

+1

, "Bir çok diğer bilgi alanları vardır ama bunlar gereksiz olabilir" Bunun onlar gereksiz olup olmadığı veya olmasın olarak daha somut olsaydım . Neredeyse inanmıyorum çünkü durum çok iyi olmasına rağmen mantıklı değil. Bunu doğrulayabileceğimiz başka potansiyel müşteriler var mı? –

8

var elbette genel bir değişkendir. Belgelemekte olduğunuz değişken hakkında herhangi bir ayrım yapmayacağınız zaman bunu kullanın. Bir örnek nesnede (sınıfın bir örneği) ayarlanmış bir değişken veya bir "instance variable" öğesidir. Tipik olarak bunlar, bir __init__ yönteminin içinde (Python'da) tanımlanacaktır. "Sınıf değişkeni" veya sınıf nesnesinde doğrudan ayarlanmış bir değişkendir.

Genellikle, bu bir sınıf ifadesinin içinde, ancak sınıftaki herhangi bir özel yöntemin dışında ayarlanır.

İşte bir örnek:

class SomeClass(object): 

    cvar = 'I am a class variable' 

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