def __init__(cls, name, bases, dct):
    """Initialize the Flyweight class. The class can be call with one argument or three:

            >>> class Flyweight(object)
            >>> class Flyweight(name, bases, dict)

        With one argument, returns the type of an object. The return value is a type object and generally
        the same object as returned by object.__class__. With three arguments, returns a new type object.

        Args:
            name (Union[object, str]): when `name`is a str, is the class name and becomes the __name__ attribute.
            bases (tuple): itemizes the base classes and becomes the __bases__ attribute.
            dct (dict): is the namespace containing definitions for class body and is copied to a standard
                dictionary to become the __dict__ attribute.
        """
    cls.__instances = {}
    type.__init__(cls, name, bases, dct)
