2017-08-16 56 views
0

時,我有一個類,它看起來像下面蟒蛇2語法錯誤運行的Python 3代碼

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__) 

當我試圖運行它在Python 2 當我運行的代碼是用Python編寫3它我得到

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

有沒有「import_from_future」來解決這個問題?

+2

真正溶膠ution是*停止運行** Python 2中的所有**代碼* –

回答

7

不,沒有__future__開關,它將在Python 2中啓用Python 3註釋。如果您使用註釋進行類型提示,請改爲使用註釋。

見PEP 484的Suggested syntax for Python 2.7 and straddling code部分和Type checking Python 2 code section的語法細節:

對於需要在Python 2.7版兼容的代碼,功能類型的註解是在評論給出的,因爲功能註釋語法介紹在Python 3

爲了您的具體的例子,那會是:

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