human
Write me a the Python program you requested given the following:
I am working on the file "2020/2020-02-29/MetaProgramming In Python.ipynb".
The first task is:
Pattern 2 : Abstract family of singleton classes - Combine two metaclasses
Can you write Python program for it?
assistant
#Here is the Python program you requested.

class MySingletonABCMeta(ABCMeta):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(MySingletonABCMeta, cls).__call__(*args)
        return cls._instances[cls]

class MyAbstractSingletonClass(metaclass=MySingletonABCMeta):
    def __init__(self):
        pass

    @abstractmethod
    def my_abstract_method(self):
        pass

MyAbstractSingletonClass()

class MyAbstractSingletonChild(MyAbstractSingletonClass):
    def __init__(self):
        pass
    
    def my_abstract_method(self):
        pass

a1 = MyAbstractSingletonChild()
b1 = MyAbstractSingletonChild()

type(a1), id(a1), type(b1), id(b1)