# define a decorator method:
def save_db_decorator(fn):

    # The wrapper method which will get called instead of the decorated method:
    def wrapper(self, *args, **kwargs):
        fn(self, *args, **kwargs)           # call the decorated method
        Test.save_to_db(self, *args, **kwargs)   # call the additional method

    return wrapper  # return the wrapper method

class Test:

    # The additional method called by the decorator:
    
    def save_to_db(self, *args, **kwargs):
        print("Saver")
    
    
    # The decorated methods:
    
    @save_db_decorator
    def crawl_1(self, *args, **kwargs):
        print("Crawler 1")
    
    @save_db_decorator
    def crawl_2(self, *args, **kwargs):
        print("Crawler 2")


# Calling the decorated methods:

test = Test()
print("Starting Crawler 1")
test.crawl_1()
print("Starting Crawler 1")
test.crawl_2()
