天天看點

類型泛化

在C++中,

template<typename T,...>
vector{...};
           

如果我們寫

vector<int> vec;
           

則T=int。

在python中有類似的用法。

from typing import TypeVar
T=TypeVar('T');

class A(object):
	def __init__(self):
		print("A");
		
class B(object):
	def __init__(self):
		print("B");
		
class C(object):
	def __init__(self,T):
		T();
		
if __name__=='__main__':
	C(A);
	C(B);
           

做法是從typing中引入TypeVar,并且将T定義為TypeVar。TypeVar的意思就是類型變量。一般的變量,如整型變量a=int(1),它接受的就是相應的整型,如1,2,...。類型變量接受的就是類型,如int,char,...等。是以我們給C傳入A類型時,T代表的就是一個A類型,T()則生成A類型的對象,C(B)同理。