2017-06-06 3 views
0

Wie erhalten Sie den Typ des Attributs von reStructuredText? Ich habe so etwas.Wie erhalten Sie den Typ des Attributs von reStructuredText?

@property 
def port(self): 
    """Get port. 

    :return: port 
    :rtype: str 
    """ 
    return self._port 

Wie kann ich Attributtyp (str)?

+0

Warum möchten Sie das tun? –

+0

Ich brauche es wie Typ für Database –

+0

Dann bellen Sie auf den falschen Baum. Docstrings sind für den Menschen, nicht für die Metaprogrammierung, und das Verlassen auf Doctrsing-Parsing wäre bestenfalls brüchig. Wenn Sie etwas Zuverlässiges wollen, müssen Sie ein richtiges Attribut schreiben -> sql type mapping. –

Antwort

1

Ist das Code-Fragment deins? Wenn ja, können Sie die Mechanik verwenden, die Sie mögen, z. fügen Sie der Funktion für eine spätere Überprüfung ein Attribut direkt hinzu: SomeClass.port.fget.return_type = int. Probieren Sie es aus, es funktioniert. Seien Sie nur vorsichtig, um die Eigenschaft über die Klasse zu qualifizieren, nicht über die Instanz (oder verwenden Sie .__class__ für eine Instanz).

Wenn nicht, parse die port.__doc__ und extrahieren Sie das entsprechende Feld.

Wenn Sie CPU-eingeschränkt sind, können Sie z. SQLAlchemy ohne die ORM-Ebene. Es kann sehr effizient SQL aus Tabellenmodellen vor der Zeit, z. während des Starts. Dann rufen Sie sie nur mit den richtigen Parametern auf und zahlen nur wenig CPU-Zeit. In den meisten Fällen wird die Query-Erstellung und Ergebnisdecodierung durch den DB-Round-Trip minimiert.

Gleiches gilt für die Analyse der RST: Sie können es im Voraus tun, z. als ein Erstellungsschritt, und speichert die Information in einer leicht zu analysierenden Datei, z. JSON oder sogar als eingelegte Python-Daten, und laden Sie es schnell als Startup.

Verwandte Themen