单例类是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。要使其他类派生自单例类,可以采用以下步骤:
以下是一个示例代码:
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
class MyBaseClass(metaclass=Singleton):
pass
class MyDerivedClass(MyBaseClass):
pass
base1 = MyBaseClass()
base2 = MyBaseClass()
derived1 = MyDerivedClass()
derived2 = MyDerivedClass()
assert base1 is base2
assert derived1 is derived2
assert base1 is not derived1
在这个示例中,Singleton
类实现了单例模式的元类。MyBaseClass
类是基类,使用 Singleton
作为元类。MyDerivedClass
类派生自 MyBaseClass
类。在创建实例时,可以看到,MyBaseClass
和 MyDerivedClass
都是单例,即它们的实例是相同的。
领取专属 10元无门槛券
手把手带您无忧上云