Pass an object to a function.

Pass teh object d to the functions __str__ and next.

"""
Pass an object to a function.
"""

import sys

class Date(object):
    "A class Date with 3 properties (year, month, day).  Pass an instance to a function."
    def __init__(self, month, day, year):
        "If the arguments are valid, create an instance of class Date."
        if not isinstance(year, int):
            raise TypeError("year must be an int")

        if not isinstance(month, int):
            raise TypeError("month must be an int")
        if month < 1 or month > 12:
            raise ValueError("month must be in range 1 to 12 inclusive")

        if not isinstance(day, int):
            raise TypeError("day must be an int")
        if day < 1 or day > 30:   #Assume (incorrectly) that every month is 30 days.
            raise ValueError("day must be in range 1 to 30 inclusive")

        self.year = year
        self.month = month
        self.day = day


def __str__(theDate):
    "Return a str showing all the information in theDate."
    return f"{theDate.month}/{theDate.day}/{theDate.year}"


def next(theDate):
    "Move the value of theDate 1 day into the future."
    if theDate.day < 30:      #Assume (incorrectly) that every month is 30 days.
        theDate.day += 1
    else:
        theDate.day = 1       #Go to the first day of the next month.
        if theDate.month <= 12:
            theDate.month += 1
        else:
            theDate.month = 1 #Go to the first month of the next year.
            theDate.year += 1


try:
    d = Date(7, 12, 1955)
except BaseException as error:
    print(error, file = sys.stderr)
    sys.exit(1)

print(f"d = {__str__(d)}")

next(d)   #Will change the value of d to be the next date.
print(f"d = {__str__(d)}")

sys.exit(0)
d = 7/12/1955
d = 7/13/1955