sync with O'Reilly Atlas
This commit is contained in:
22
05-data-classes/typing_namedtuple/coordinates.py
Normal file
22
05-data-classes/typing_namedtuple/coordinates.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""
|
||||
``Coordinate``: a simple ``NamedTuple`` subclass with a custom ``__str__``::
|
||||
|
||||
>>> moscow = Coordinate(55.756, 37.617)
|
||||
>>> print(moscow)
|
||||
55.8°N, 37.6°E
|
||||
|
||||
"""
|
||||
|
||||
# tag::COORDINATE[]
|
||||
from typing import NamedTuple
|
||||
|
||||
class Coordinate(NamedTuple):
|
||||
|
||||
lat: float
|
||||
lon: float
|
||||
|
||||
def __str__(self):
|
||||
ns = 'N' if self.lat >= 0 else 'S'
|
||||
we = 'E' if self.lon >= 0 else 'W'
|
||||
return f'{abs(self.lat):.1f}°{ns}, {abs(self.lon):.1f}°{we}'
|
||||
# end::COORDINATE[]
|
||||
20
05-data-classes/typing_namedtuple/coordinates2.py
Normal file
20
05-data-classes/typing_namedtuple/coordinates2.py
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
``Coordinate``: a simple ``NamedTuple`` subclass
|
||||
|
||||
This version has a field with a default value::
|
||||
|
||||
>>> moscow = Coordinate(55.756, 37.617)
|
||||
>>> moscow
|
||||
Coordinate(lat=55.756, lon=37.617, reference='WGS84')
|
||||
|
||||
"""
|
||||
|
||||
# tag::COORDINATE[]
|
||||
from typing import NamedTuple
|
||||
|
||||
class Coordinate(NamedTuple):
|
||||
|
||||
lat: float # <1>
|
||||
lon: float
|
||||
reference: str = 'WGS84' # <2>
|
||||
# end::COORDINATE[]
|
||||
9
05-data-classes/typing_namedtuple/nocheck_demo.py
Normal file
9
05-data-classes/typing_namedtuple/nocheck_demo.py
Normal file
@@ -0,0 +1,9 @@
|
||||
import typing
|
||||
|
||||
class Coordinate(typing.NamedTuple):
|
||||
|
||||
lat: float
|
||||
lon: float
|
||||
|
||||
trash = Coordinate('Ni!', None) # <1>
|
||||
print(trash)
|
||||
Reference in New Issue
Block a user