Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from abc import ABC, abstractmethod
- class CarFactory(ABC):
- @abstractmethod
- def create_car(self):
- ...
- class FordFactory(CarFactory):
- def create_car(self):
- pass
- class SingletonMeta(type):
- _instances = {}
- def __call__(cls, *args, **kwargs):
- if cls not in cls._instances:
- instance = super().__call__(*args, **kwargs)
- cls._instances[cls] = instance
- return cls._instances[cls]
- class FordFactorySingleton(FordFactory, metaclass=SingletonMeta):
- cars_made = 0
- def create_car(self):
- self.cars_made += 1
- if __name__ == "__main__":
- ford_factory = FordFactorySingleton()
- ford_factory.create_car()
- print(f'ford_factory instance made {ford_factory.cars_made} cars')
- ford_factory2 = FordFactorySingleton()
- ford_factory2.create_car()
- print(f'ford_factory2 instance made {ford_factory2.cars_made} cars')
- print(f'Are they the same objects? {id(ford_factory) == id(ford_factory2)}')
Advertisement
Add Comment
Please, Sign In to add comment