# Principled Programming / Tim Teitelbaum / Chapter 18. class Pair[K, V]: """Generic pairs.""" # Representation _key: K _value: V # Constructor. def __init__(self, k: K, v: V) -> None: self._key = k; self._value = v # Access.self. def get_key(self) -> K: return self._key def get_value(self) -> V: return self._value # String representation. def __str__(self) -> str: return "<" + str(self._key) + "," + str(self._value) + ">" # Equality. def __eq__(self, other) -> bool: if other is None: return False if other is self: return True if not isinstance(other, Pair): return False return (self._key == other._key) and (self._value == other._value)