from pair import Pair

# Fraction  
class Fraction(Pair[int,int]):
    # Constructor.
    def __init__(self, numerator: int, denominator: int) -> None:
        super().__init__(numerator, denominator)  # Apply the Pair constructor.
        assert denominator != 0, "0 denominator"
    
    # Access.
    def get_numerator(self)   -> int: return self._key
    def get_denominator(self) -> int: 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, Fraction): return False;
        return (self._key == other._key) and (self._value == other._value)