0
Python 3.5+有一個overloading軟件包。 通過這個包,可以重新定義方法,但是具有不同的類型提示,並且它的裝飾器會發現應該調用哪個重載的方法。Python 3.5 - 使用@overload重載方法
常見的編碼模式:
class foo:
def func(param):
if instance(param, int):
pass
elif instance(param, str):
pass
elif instance(param, list):
pass
else:
raise ValueError()
隨着@overload:
class foo:
@overload
def func(param: int):
pass
@overload
def func(param: str):
pass
@overload
def func(param: list):
pass
這裏是documentation。
我的問題是:
- 對性能的影響有多大相比舊款參數類型轉換?
- 此包如何訪問類型提示?
*常見的編碼模式* - 不,它不是,對不起。大多數Python代碼不需要使用'isinstance()'。 –
請注意,該包並非特定於Python 3.5。 Python 3.5只是標準化的類型提示,但註釋可從Python 3.0開始使用。你鏈接的軟件包支持3.3以上;你的例子根本不使用'typing'模塊。 –
[源代碼](https://github.com/bintoro/overloading.py/blob/master/overloading.py)應該讓你回答第二個問題(它按照預期讀取函數註釋)。看着'dispatcher()',我會首先選擇'slow'。 –