2017-05-25 49 views
4

提取參數列表考慮其包裝另一個函數並將輸出到一個單列表的功能:python3打字:從贖回

def listify(func): 
    return lambda *kargs, **kwargs: [func(*kargs, **kwargs)] 

你會怎樣的類型提示此功能在python3?這是我最好的嘗試:

from typing import Callable, TypeVar 
T = TypeVar('T') 

def listify(func: Callable[..., T]) -> Callable[..., List[T]]: 
    return lambda *kargs, **kwargs: [func(*kargs, **kwargs)] 

但我不開心的是,返回Callable不繼承參數類型輸入Callable的簽名。有沒有什麼辦法可以在不對func的參數個數作出假設的情況下做到這一點?

回答

1

你不能做任何你想要的類型暗示。沒有語法來捕獲TypeVar泛型中的參數部分。

Callable原本保持簡單,因爲它確實只是表示回調函數。更改是一英尺,但是only to specify specific arguments,並且沒有選項可以替換第一個參數(類型檢查器只接受列表顯示或...)。有一個open proposal to introduce an ArgumentsVar object來呈現特定的簽名,但還沒有實現。

你有什麼是目前可以實現的最好的。