diff --git a/vnpy/trader/utility.py b/vnpy/trader/utility.py index a154e175..fc4ab4cd 100644 --- a/vnpy/trader/utility.py +++ b/vnpy/trader/utility.py @@ -445,3 +445,17 @@ def virtual(func: "callable"): that can be (re)implemented by subclasses. """ return func + + +class Singleton(type): + """ + Metaclass for creating singleton object. + """ + _instances = {} + + def __call__(cls, *args, **kwargs): + """""" + if cls not in cls._instances: + cls._instances[cls] = super( + Singleton, cls).__call__(*args, **kwargs) + return cls._instances[cls]