2017-08-16 1 views
0

Ich habe eine Klasse, die wie folgtPython 2 Syntaxfehler bei Python läuft 3 Code

class ExperimentResult(BaseDataObject): 
    def __init__(self, result_type: str, data: dict, references: list): 
     super().__init__() 
     self.type = result_type 
     self.references = references 
     self.data = data 

    def __repr__(self): 
     return str(self.__dict__) 

Der Code in Python geschrieben sieht 3, während ich es in Python 2. zu laufen versuche Wenn ich laufen es bekomme ich

def __init__(self, result_type: str, data: dict, references: list): 
           ^
SyntaxError: invalid syntax 

Gibt es eine "import_from_future", um das zu lösen?

+2

Die wahre Sol * In Python 2 * muss ** überhaupt kein Code mehr ausgeführt werden * –

Antwort

7

Nein, es gibt keinen Schalter __future__, der Python 3-Annotationen in Python 2 aktiviert. Wenn Sie Annotationen für Typhinweis verwenden, verwenden Sie stattdessen Kommentare.

Siehe Suggested syntax for Python 2.7 and straddling code Abschnitt von PEP 484 und die Type checking Python 2 code section für die Syntax-Details:

Für Code, der Python sein muss 2.7 kompatibel, Funktion Typenannotationen in den Kommentaren angegeben werden, da die Funktion Anmerkung Syntax eingeführt wurde in Python 3.

Für Ihr spezielles Beispiel, das wäre:

class ExperimentResult(BaseDataObject): 
    def __init__(self, result_type, data, references): 
     # type: (str, dict, list) -> None 
     super().__init__() 
     self.type = result_type 
     self.references = references 
     self.data = data