當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python typing.Type用法及代碼示例


用法:

class typing.Type(Generic[CT_co])

使用 C 注釋的變量可以接受類型為 C 的值。相反,使用 Type[C] 注釋的變量可以接受本身就是類的值 - 具體來說,它將接受 Cclass object 。例如:

a = 3         # Has type 'int'
b = int       # Has type 'Type[int]'
c = type(a)   # Also has type 'Type[int]'

請注意,Type[C] 是協變的:

class User: ...
class BasicUser(User): ...
class ProUser(User): ...
class TeamUser(User): ...

# Accepts User, BasicUser, ProUser, TeamUser, ...
def make_new_user(user_class: Type[User]) -> User:
    # ...
    return user_class()

事實是Type[C]是協變的意味著所有的子類C應該實現相同的構造函數簽名和類方法簽名C.類型檢查器應標記違反此規則的行為,但還應允許子類中的構造函數調用與指定基類中的構造函數調用匹配。類型檢查器如何處理這種特殊情況可能會在未來的修訂中發生變化PEP 484.

Type 的唯一合法參數是類、Any、類型變量和任何這些類型的聯合。例如:

def new_non_team_user(user_class: Type[BasicUser | ProUser]): ...

Type[Any] 等價於 Type ,後者又等價於 type ,它是 Python 元類層次結構的根。

版本 3.5.2 中的新函數。

自 3.9 版後已棄用:type現在支持[].看PEP 585通用別名類型.

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 typing.Type。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。