2016-03-27 47 views
0

是否可以在類型的超類中添加對類型提示的約束?例如,我想要的東西,看起來像這樣:類型超類的Python類型提示約束

def foo(g: T(S)) -> T: 
    pass 

這將是參加一個參數TgT的功能必須是類SS本身的一個子類,和函數的返回值是類型T

C#中的等價功能將類似

public static void foo<T>(T g) where T : S 
{ 
} 

我都對着PEP484,但似乎並沒有被這事。

+0

我想我們需要一個更明顯的例子,或者至少我是這樣的,因爲我並不完全確定你的目標是什麼。 – Goodies

+0

這是嗎? https://www.python.org/dev/peps/pep-0484/#type-variables-with-an-upper-bound –

+0

@IsmailBadawi似乎是它! – Chin

回答

1

PEP484,你想要的語法似乎是:

from typing import TypeVar 

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

def foo(g: T) -> T: 
    pass