*Memo:
- My post explains type hints (1).
- My post explains type hints (2).
- My post explains type hints (3).
- My post explains type hints (4).
- My post explains type hints (6).
<dict>:
from collections.abc import (
MutableMapping, Mapping, Reversible,
Collection, Sized, Container, Iterable
)
v: dict[int, str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: MutableMapping[int, str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Mapping[int, str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Reversible[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Collection[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Sized = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Container[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
# v: Iterable[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}
print(v)
# No error
print(v[0])
# Reversible, Iterable, Collection, Sized, Container and Iterable get error.
print(*v)
# Hashable, Sized and Container get error.
print(v|v)
# MutableMapping, Mapping, Reversible, Collection,
# Sized, Container and Iterable get error.
<dict.keys()>:
from collections.abc import (
KeysView, MappingView, Reversible,
Collection, Sized, Container, Iterable
)
v: KeysView[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: MappingView = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: Reversible[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: Collection[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: Sized = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: Container[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
# v: Iterable[int] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.keys()
print(v)
# No error
print(*v)
# MappingView, Sized and Container get error.
print(v|v)
# MappingView, Reversible, Collection, Sized,
# Container and Iterable get error.
<dict.values()>:
from collections.abc import (
ValuesView, MappingView, Hashable, Reversible,
Collection, Sized, Container, Iterable
)
v: ValuesView[str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: MappingView = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Hashable = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Reversible[str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Collection[str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Sized = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Container[str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
# v: Iterable[str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.values()
print(v)
# No error
print(*v)
# MappingView, Hashable, Sized and Container get error.
<dict.items()>:
from collections.abc import (
ItemsView, MappingView, Reversible,
Collection, Sized, Container, Iterable
)
v: ItemsView[int, str] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: MappingView = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: Reversible[tuple[int, str]] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: Collection[tuple[int, str]] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: Sized = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: Container[tuple[int, str]] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
# v: Iterable[tuple[int, str]] = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E'}.items()
print(v)
# No error
print(*v)
# MappingView, Sized and Container get error.
print(v|v)
# MappingView, Collection, Sized, Container and Iterable get error.
<iterator>:
from collections.abc import Iterator, Iterable
v: Iterator[int] = iter([0, 1, 2, 3, 4])
# v: Iterable[int] = iter([0, 1, 2, 3, 4])
print(v)
print(*v)
# No error
<generator>:
from collections.abc import Generator, Iterator, Iterable
v: Generator[int] = (x for x in range(5))
# v: Iterator[int] = (x for x in range(5))
# v: Iterable[int] = (x for x in range(5))
print(v)
print(*v)
# No error
<str>:
from collections.abc import (
Hashable, Sequence, Reversible, Collection, Sized, Container, Iterable
)
v: str = '01234'
# v: Hashable = '01234'
# v: Sequence[str] = '01234'
# v: Reversible[str] = '01234'
# v: Collection[str] = '01234'
# v: Sized = '01234'
# v: Container[str] = '01234'
# v: Iterable[str] = '01234'
print(v)
# No error
print(v[0], v[1:3])
# Hashable, Reversible, Collection,
# Sized, Container and Iterable get error.
print(*v)
# Hashable, Sized and Container get error.
print(v+v)
# Hashable, Sequence, Reversible, Collection,
# Sized, Container and Iterable get error.
<bytes>:
from collections.abc import (
Hashable, Sequence, Reversible, Collection, Sized, Container, Iterable
)
v: bytes = b'01234'
# v: Hashable = b'01234'
# v: Sequence[int] = b'01234'
# v: Reversible[int] = b'01234'
# v: Collection[int] = b'01234'
# v: Sized = b'01234'
# v: Container[int] = b'01234'
# v: Iterable[int] = b'01234'
print(v)
# No error
print(v[0], v[1:3])
# Hashable, Reversible, Collection, Sized,
# Container and Iterable get error.
print(*v)
# Hashable, Sized and Container get error.
print(v+v)
# Hashable, Sequence, Reversible, Collection,
# Sized, Container and Iterable.
<bytearray>:
from collections.abc import (
MutableSequence, Sequence, Reversible,
Collection, Sized, Container, Iterable
)
v: bytearray = bytearray(b'01234')
# v: MutableSequence[int] = bytearray(b'01234')
# v: Sequence[int] = bytearray(b'01234')
# v: Reversible[int] = bytearray(b'01234')
# v: Collection[int] = bytearray(b'01234')
# v: Sized = bytearray(b'01234')
# v: Container[int] = bytearray(b'01234')
# v: Iterable[int] = bytearray(b'01234')
print(v)
# No error
print(v[0], v[1:3])
# Reversible, Collection, Sized, Container and Iterable get error.
print(*v)
# Sized and Container gets error.
print(v+v)
# MutableSequence, Sequence, Reversible, Collection,
# Sized, Container and Iterable get error.
<range>:
from collections.abc import (
Hashable, Sequence, Reversible, Collection, Sized, Container, Iterable
)
v: range = range(5)
# v: Hashable = range(5)
# v: Sequence[int] = range(5)
# v: Reversible[int] = range(5)
# v: Collection[int] = range(5)
# v: Sized = range(5)
# v: Container[int] = range(5)
# v: Iterable[int] = range(5)
print(v)
# No error
print(v[0], v[1:3])
# Hashable, Reversible, Collection,
# Sized, Container and Iterable get error.
print(*v)
# Hashable, Sized and Container get error.
Top comments (0)