human
I am working on the file "A Beginners Guide to Python/12. An Intuition for OOP.ipynb".
The first task is:
So what does the above code do? Well, even though we haven't covered indentation and if/else statements (yet) my well-chosen variables names and comments were probably sufficient for you to figure out what is going on. 
Basically, this code creates two objects (a ball and a football player called "Messi"), we then check if Messi is close to the ball. If he is, he kicks it up the pitch. If he isn't near the ball Messi starts running towards it. 
In short, objects and object methods in Python allow us to write code at a 'high-level', we can leave all the 'low-level' stuff for another developer (or Python itself) to handle. And that leaves us all the time in the world to do the fun stuff!
Building A Time Object..
I am going to finish today's lecture with an actual example of Object Orientated Programming in practice.
I'm going to quickly build a 'Time class'. It is going to be a class that allows us to add times together and print them. For example: 6:00 + 30 minutes should equal 6:30 and 10:59 + 1:01 should equal 12:00. 
Please be aware that I DO NOT expect you to understand the code below nor am I going to explain in detail how it works either. I just wanted to end this lecture on a real example, simple as that.
Can you write Python program for it?

Can you provide a Python program to print them?
assistant
#Here is Python program to print them.

class Time(object):
    
    # Do you remember in the variable names lecture I said that 
    # you shouldn't name a variable '__something' unless you know what you are doing?
    # Well, thats because double underscore is usually reserved for "hidden" class properties/functions.
    # In this particular case, __init__, __repr__, __add__, all have very special meanings in Python. 
    
    def __init__(self, hours, mins=0):
        assert isinstance(hours, int) and 0<= hours <=24  # Hours should be between 0 and 24 for a 24-hour clock. 
        assert isinstance(mins, int) and  0<= mins  <=60

        self.hours = hours
        self.mins = mins

    def __repr__(self): 
        return format_time(self.hours, self.mins)
        
    def __add__(self, other):
        """
        This function takes itself and another Time object and adds them together.
        """
        a = self.mins
        b = other.mins

        x = self.hours
        y = other.hours
        
        c = str( (a + b) % 60 ).zfill(2)   # Integer division and Modulo Arithmetic. You have seen this before! 
        z = str((((a+b) // 60) + x + y) % 25).zfill(2)
        
        return format_time(z, c)

def format_time(h, m):
    """
    This function takes hours (int) and mins(int) and returns them in a pretty format. 2, 59 => 02:59
    """
    return "{}:{}".format(str(h).zfill(2), str(m).zfill(2))