簡體   English   中英

將Mypy的通用self與python2類型注釋一起使用

[英]Using mypy's generic self with python2 type comments

我有一種情況,我想使用通用self來輸入mypy。 但是我需要保持python 2.7的兼容性,所以我使用的是類型注釋語法。

from typing import TypeVar

T = TypeVar('T', bound='Shape')

class Shape:
    def set_scale(self: T, scale: float) -> T:
        self.scale = scale
        return self

如何將此代碼轉換為類型注釋? 類型注釋會省略“自我”類型,因此T定義會丟失:

    def set_scale(self, scale):
        # type: (float) -> T

不必排除self ; 您只是可以選擇這樣做:

使用縮寫形式時(例如,#type:(str,int)-> None),除實例和類方法的第一個參數( 通常會省略,但允許包含它們 )之外,每個參數都必須考慮在內


在PEP-484中, 針對Python 2.7和跨代碼建議語法末尾的第三注

所以你可以寫

def set_scale(self, scale):
    # type: (T, float) -> T

這樣的注釋的使用者的工作是對參數進行計數並確定self被省略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM