2013-07-04 20 views
8

Ben Sphinx dökümanlara göre dönüştürülmesi amaçlanan Docstringler ile aşağıdaki gibi bir Python sınıfı şey vardır:Sphinx kullanarak bir Python özellik belirleyicisi için nasıl belge üretebilirim?

class Direction(object): 
    """ 
    A direction in which movement can be made. 
    """ 
    def __init__(self): 
     self._name = None 

    @property 
    def name(self): 
     """ 
     The unique name of the direction. 

     :return: The direction name 
     :rtype: string 
     """ 
     return self._name 

    @name.setter 
    def name(self, value): 
     """ 
     Sets the direction name. 

     :param string value: The direction name 
     """ 
     self._name = value 

Sfenks çıktı şuna benzer:

sınıfYön (isim) Hareketin yapılabileceği bir yön.

adı yön benzersiz bir isimdir.

İade: yön adı

Dönüş türü: olarak gittiği yere kadar gayet dize

, ancak herhangi bir bilginin tam olmadığına dikkat name setter hakkında.

Sphinx'in özellik ayarlayıcı için belge üretmesini sağlamanın bir yolu var mı?

+1

Eğer Sphinx bunun için görünüyorsa, getter belgelerinde herhangi bir özel get/set davranışını belgelemek daha mantıklı gelecektir. Buradaki ayarlayıcı için belgeleriniz temel olarak gereksizdir: bu bir özelliktir, bu yüzden açık bir şekilde değeri ayarlar ve parametrenin belgelenmesi de gereksizdir çünkü her bir ayarlayıcı aynı argümanı gerektirir ve setter aslında açık bir şekilde çağrılmaz. Özel get/set davranışı, bir bütün olarak mülkün gerçekten bir özelliği. Özelliklerin noktası, ayrı bir get/set işlev çağrısı değil, tek bir özellik adıyla erişilir. – BrenBarn

+0

@BrenBarn Sfenks'in beklediği şey bu olursa kesinlikle yapabilirim. Ancak, oluşturulan belgeler aslında bir özellik olduğunu göstermez ve bunu açıklamak için ': param:', ': return:' ve ': rtype:' etiketlerini nasıl kullanabileceğimi bilmiyorum. –

+2

@MatthewMurdoch, Sphinx, getter'i '()' kullanmadan belgeliyor. Bu, kombine dokümanlar ile birlikte, kullanıcının bir özellik olduğunu anlamasına yardımcı olmalıdır. –

cevap

10

Sfenks mülkiyet ayarlayıcıları Docstringler yüzden bir özellik için tüm belgeler @property yöntemine olmalıdır yok sayar. Sphinx, belirli belirli etiketleri (örneğin, :param ...:) anladığı sırada, herhangi bir özel etiketi kabul eder ve bunları takip eden metnin etiketleri olarak işleyecektir.

nedenle makul bir şekilde belgelere hale getirecek aşağıdaki gibi bir şey (gerekirse getter, setter ve type başka metne değiştirilebilir) .

sınıfYön (isim) hareketi yapılabilir hangi bir yönü:

@property 
def name(self): 
    """ 
    The unique name of the direction. 

    :getter: Returns this direction's name 
    :setter: Sets this direction's name 
    :type: string 
    """ 
    return self._name 

oluşturulan belgeler şuna benzer.

adı yön benzersiz bir isimdir.

Getter: İade bu yönde adı

Setter: Setleri bu yönde adı

Tür: dize

T Bu çözüm yönünde beni işaret ettiği için @BrenBarm ve @ A-B-B'ye hanks.

İlgili konular