亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 泛型注釋的不理解?

python 泛型注釋的不理解?

長風秋雁 2018-08-26 15:05:28
本人python新手, 在翻閱pep484, 以及mypy文檔的時候有遇到了一點不懂的地方, 如下:# 文檔實例如下:from typing import TypeVar, Generic T = TypeVar('T')class Stack(Generic[T]):     def __init__(self) -> None:         # Create an empty list with items of type T         self.items: List[T] = []    def push(self, item: T) -> None:         self.items.append(item)    def pop(self) -> T:         return self.items.pop()    def empty(self) -> bool:         return not self.items然后文檔下面有這樣一段話:The Stack class can be used to represent a stack of any type: Stack[int], Stack[Tuple[int, str]], etc然后給出了一段實例用法:# Construct an empty Stack[int] instancestack = Stack[int]() stack.push(2) stack.pop() stack.push('x') # Type error我個人的理解是:T表示任意類型Stack[int]表示Stack只能存儲int類型, 所以下面傳入了一個字符串就報錯疑惑是:不知道上面的理解對不對如果我在一開始就確定好堆里面的數據類型就行了為什么要創造一個泛型?泛型在python中有沒有什么使用場景, 本人沒有接觸過java之類的語言, 因此覺得就看看例子感覺特別抽象, 也不知道在上面場景下如何使用.本人剛剛接觸python, 若有理解錯誤的地方還請多多包涵, 望有前輩能夠解惑!
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

  • 如果不用泛型,那我們就需要IntStack/StrStack。如果只是基本類型還好,麻煩的是以后我們還得要TupleIntStrStack/TupleIntIntStrStrStack/MyLittleClassStack/MyLargeClassStack,每個都得重新聲明,太麻煩

  • 泛型主要用于容器,比方說棧,隊列,我現在最常用的容器是concurrent.futures.Future。

  • 泛型在強類型語言(Java)里用的還是非常廣泛的,但mypy的使用率實在低下,所以看起來泛型沒什么使用場景。如果強制每個程序(尤其是庫)都要有類型標識,例子就多了。


查看完整回答
反對 回復 2018-08-27
  • 1 回答
  • 0 關注
  • 1241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號