2015-07-16 7 views
16

Es gibt ein ->, oder Strich-größer-als-Symbol am Ende einer Python-Methode, und ich bin mir nicht sicher, was es bedeutet. Man könnte es auch einen Pfeil nennen. HierWas bedeutet das Symbol -> (Strich-größer-als-Pfeil) in einer Python-Methodensignatur?

ist das Beispiel:

@property 
def get_foo(self) -> Foo: 
    return self._foo 

wo self._foo eine Instanz von Foo ist.

Meine Vermutung ist, dass es eine Art statische Deklaration ist, um dem Interpreter zu sagen, dass self._foo vom Typ Foo ist. Aber wenn ich dies getestet habe, passiert nichts Ungewöhnliches, wenn self._foo keine Instanz von Foo ist. Auch wenn self._foo von einem anderen Typ als Foo ist, sagen wir mal, es war ein int, dann type(SomeClass.get_foo()) gibt int zurück. Also, was ist der Sinn von -> Foo?

Dieses Konzept ist schwer zu suchen, weil es ein Symbol ohne einen gemeinsamen Namen ist und der Begriff "Pfeil" irreführend ist.

Antwort

15

Dies ist function annotations. Es kann verwendet werden, um zusätzliche Informationen an die arguments oder eine return values von Funktionen anzuhängen. Es ist eine nützliche Art zu sagen, wie eine Funktion verwendet werden muss. Funktionen Anmerkungen werden im Attribut __annotations__ einer Funktion gespeichert.

Use Cases (From documentation)

  • Bereitstellung von Informationen eingeben

    • Typ Überprüfung
    • IDEs zeigen lassen, welche Arten eine Funktion erwartet und gibt
    • Funktion Überlastung/generic Funktionen
    • Fremdsprachiger Brücken
    • Anpassung
    • Prädikatslogikfunktionen
    • Datenbankabfrage-Mapping
    • Parameter RPC
  • Weitere Informationen

    • Dokumentation für Parameter und Rückgabewerte Marshalling

Von python-3.5 kann es für Type Hints

+0

Mein Geist verwendet werden gründlich durchgebrannt! –