App下載

Python3.6如何添加類型注釋的驗證?

猿友 2021-07-28 10:41:33 瀏覽數(shù) (1600)
反饋

今天小編為各位帶來的是一位開發(fā)者詢問Python3.6如何添加類型注釋驗證,希望能對各位有所幫助。

我有一個使用?__annotations__?字典的方法來檢查類的所有屬性是否有正確的值。它對于基本類型(如?int?、?str?或?bool?)非常適用,但對于更復(fù)雜的元素(如?typing?)則不適用。工會或打字??蛇x(也是一個聯(lián)盟)。

失敗是由Union對象中的isinstance()方法引起的,該方法拋出TypeError。我甚至找不到一種方法來確保注釋是一個?Union?,因此我無法驗證一個值是否符合某個類型。

解決方法:

這個想法,正如GvR對這個問題的評論中提到的,是實現(xiàn)你自己的?issubclass/isinstance?版本,使用一些附加到類型的額外元數(shù)據(jù):

>>> Union[int, str].__args__
(int, str)
>>> Union[int, str].__origin__
typing.Union

?__args__?和?__origin__?從Python 3.6.3開始可用。在較早的版本中可能不會,因為打字仍然是臨時的。

在內(nèi)省類型的內(nèi)部接口被充實和輸入從臨時狀態(tài)結(jié)束之前,您應(yīng)該預(yù)料到由于API的更改而導(dǎo)致的破壞。


0 人點贊