[英]Classmethods in Generic Protocols with self-types, mypy type checking failure
[英]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.