2017-06-12 5 views
4
class Parameters(dict): 
    """ Some doc here """ 
    pass 

class System(object): 
    Parameter = Parameters 
    """ The default parameters attribute builder """ 

    def __init__(self): 
     self.parameters = self.Parameters() 

問題は、私はスフィンクスとシステムのautoclassを行う際に、文書のパラメータは、私がParameter = Parameters怒鳴る書いたものではありませんあると(クラスである)クラスの属性をレンダリングしたいが、 Parameterクラスの完全なドキュメントになります。私はそれが望ましくない、それはあまりにも面倒で、私の.Parameters属性が本当であるものと一致しません(Parametersクラスだけでなく関数、またはdict(a=0,b=1).copyなど)。私はどのようにドキュメント

System 
====== 
.. autoclass:: system.System 
    :members: __init__,Parameters 

私が見つけた唯一の方法は、最初なしにパラメータを設定し、initでそれを変更することですが、それは他の理由

class System(object): 
    Parameter = None 
    """ The default parameters attribute builder """ 

def __init__(self): 
    if self.Parameters is None: 
     self.Parameters = Parameters 
    self.parameters = self.Parameters() 
+1

これを行うと、[this](https://i.imgur.com/ILGy48l.png)が作成されます。また、それは属性なので、CamelCaseはクラス名のために予約されているので、実際には 'parameter = Parameters'でなければなりません。 – Artyer

+0

異なるスフィンクスのバージョン、多分? –

答えて

1

ための便利ではありませんが、それはこのように、行うことができますか?

class Parameters(dict): 
    pass 

class System(object): 

    def __init__(self, Parameters): 
     self.parameters = Parameters 


parameters = Parameters() 
parameters['x'] = '3.14' 
parameters['y'] = '1.618' 

system = System(parameters) 

print(system.parameters) 

{'y': '1.618', 'x': '3.14'} 
+0

こんにちは、ありがとう、私の問題は、スフィンクスのドキュメントレンダリングだけです。私のプログラムでは、Parameter属性は、サブクラスで定義されたパラメータのコンストラクタでなければならず、引数 'System'であってはなりません。例えば:Systemサブクラス定義の 'Parameters = dict(x = 3.14、y = 1.618).copy'。 – user3240484

+0

申し訳ありません、それを持っています! –