OOP python composition code example

Example 1: what is composition in python

# It's when a class has a (is made-of) another class.
# Example

class Thing(object):
    
    def func(self):
        print("Function ran from class Thing().")

class OtherThing(object): # Note that I don't use inheritance to get the func() function
    
    def __init__(self):
        self.thing = Thing() # Setting the composition, see how this class has-a another class in it?
        
    def func(self):
        self.thing.func() # Just runs the function in class Thing()
    
    def otherfunc(self):
        print("Function ran from class OtherThing().")

random_object = OtherThing()

random_object.func() # Still works, even though it didn't inherit from class Thing()
random_object.otherfunc()

Example 2: composition in python

In composition one of the classes is composed of one or more instance of other classes. In other words one class is container and other class is content and if you delete the container object then all of its contents objects are also deleted