2017-06-12 1 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() 

Das Problem ist, wenn ich ein autoclass des Systems mit Sphinx tun, wird nicht das Dokument Parameter sein, was ich unten Parameter = Parameters schrieb aber wird das vollständige doc der Parameter-Klasse sein. Ich will das nicht, es ist zu chaotisch und stimmt nicht überein, was mein .Parameters-Attribut wirklich ist (kann eine Parameter-Klasse aber auch eine Funktion sein, oder eine dict(a=0,b=1).copy etc ...).Ich möchte ein Attribut einer Klasse machen (was eine Klasse ist) mit meinem, wie doc

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

Der einzige Weg, ich fand, ist Parameter auf None gesetzt ersten und es bei init ändern, aber es ist nicht bequem aus anderen Gründen

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

Wenn ich das tue, schafft es [das] (https://i.imgur.com/ILGy48l.png), die wie scheint, was Sie wollen. Da es sich um ein Attribut handelt, sollte es wirklich "Parameter = Parameter" sein, da CamelCase für Klassennamen reserviert ist. – Artyer

+0

Differierende Sphinx-Versionen, vielleicht? –

Antwort

1

es kann getan werden, wie das?

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

hallo, danke, mein Problem ist nur mit der sphinx doc render. In meinen Programmen muss das Parameter-Attribut ein Konstruktor von Parametern sein, die in Subklassen definiert sind, und sollte kein Argument von 'System' sein. z.B. : 'Parameter = dict (x = 3.14, y = 1.618) .copy' in einer Systemunterklassendefinition. – user3240484

+0

Sorry, hab es! –

Verwandte Themen