2011-08-31 28 views
7

मैं कोड से दस्तावेज़ उत्पन्न करने के लिए स्फिंक्स का उपयोग कर रहा हूं। क्या किसी को पता है कि डिफ़ॉल्ट तर्क से उत्पन्न फ्लोटिंग पॉइंट नंबरों के स्वरूपण को नियंत्रित करने का कोई तरीका है या नहीं।स्फिंक्स फ़्लोटिंग पॉइंट स्वरूपण

उदाहरण के लिए अगर मैं निम्नलिखित समारोह है:

def f(x = 0.97): 
    return x+1 

उत्पन्न प्रलेखन समाप्त होता है की तरह लग रही:

foo(x = 0.96999999999997) 
जाहिर

यह एक चल बिन्दु परिशुद्धता मुद्दा है, लेकिन वहाँ के लिए एक रास्ता है दस्तावेज इतना बदसूरत नहीं लग रहा है?

उत्तर

1

आप .. autofunction:: निर्देश के साथ एक समारोह हस्ताक्षर ओवरराइड कर सकते हैं। तो अपने उदाहरण, एक समारोह मॉड्यूल bar में foo(x=0.97) के रूप में परिभाषित संबोधित करने के लिए:

.. automodule:: bar 

    .. autofunction:: foo(x=0.97) 

और जिसके परिणामस्वरूप दस्तावेज़ वास्तव में लंबे समय तक नंबर के साथ व्याख्या संस्करण के बजाय प्रदान किया गया हस्ताक्षर का प्रयोग करेंगे।

आप इसे .. autoclass:: और .. automethod:: और इसी तरह के साथ समतुल्य रूप से कर सकते हैं। इसका उपयोग this part of the sphinx.ext.autodoc दस्तावेज़ों में "विकल्प और उन्नत उपयोग" में किया गया है।

0

मैंने स्फिंक्स का उपयोग नहीं किया है, इसलिए मुझे यकीन नहीं है कि यह काम करेगा, लेकिन मेरी धारणा है कि repr() प्रलेखन के प्रारूप को निर्धारित करने के लिए उपयोग किया जाता है। आप एक कस्टम __repr__ विधि है कि एक अच्छे लग रही संख्या वापस आ जाएगी देखने के लिए कि अगर मदद करता है के साथ उपवर्गीकरण float कोशिश कर सकते हैं:

class my_float(float): 
    def __repr__(self): 
     return str(self) 

>>> float(0.97) 
0.96999999999999997 
>>> my_float(0.97) 
0.97 

>>> def foo(x = my_float(0.97)): 
...  return x+1 
... 
>>> foo() 
1.97 
+0

उत्तर के लिए धन्यवाद। मैं वास्तव में एक दस्तावेज साइड समाधान की उम्मीद कर रहा था जिसमें वास्तविक परियोजना स्रोत को संशोधित करने में शामिल नहीं था। – ctrlc

संबंधित मुद्दे