我讀了很多關於泛型類的內容,雖然這些類很酷,但有時候我只需要一個泛型函數。這是我寫的一個小的:Python中泛型函數的最佳實踐
def _matrix_map(self, mapper):
"""returns the matrix applying the mapper funcfunc"""
return {key: mapper(value) for key, value in self._matrix.items()}
這是怎麼被註釋的類型。在與通用支持靜態類型語言,我會寫這樣的事情
private Dictionary<KeyType, ValueType> matrix;
private Dictionary<KeyType, T> matrix_map<T>(Func<ValueType, T>)
所以,我想我會寫這樣的:
T = TypeVar('T')
def _matrix_map(self, mapper: Callable[[Tile], T]) -> Dict[Coordinate, T]:
我得到了它與mypy傳遞像這樣,但pylint討厭這個。
第一行:
C0103:Invalid class attribute name "T"
而且在第二行:
E0602:Undefined variable 'T'
所以我覺得我做錯了什麼,我可以改變的變量名(ttt
? typ
?),但這並不能解決第二個問題。我不能成爲第一個想要(靜態類型)泛型函數的人,但我無法在任何地方找到任何好的資源。任何建議?
你進口的打字員嗎? –
@SamCraig是的,我做了,問題不是它找不到類型,而是它找不到T,我在前一行中聲明的變量。 – McKay