本人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
然后文档下面有这样一段话:
TheStack
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
, 若有理解错误的地方还请多多包涵, 望有前辈能够解惑!
qq_花开花谢_0
相关分类