什么是确保在初始化类对象时仅创建唯一实例的好方法,请在回答中具体说明。
例如,对于以下类,我想确保在创建带有StateMachineSystems
的{{1}}实例时,任何后来创建的对象(在这种情况下为'TEST'
)都指向{{1} }。
y
答案 0 :(得分:1)
我认为看完单例设计模式后,这对我有用。
class Singleton(type):
_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]
class StateMachineSystems(metaclass=Singleton):
def __init__(self,system_name):
self.system_name = system_name
def set_sequence_number(self,sequnce_number):
self.sequnce_number = sequnce_number
def get_sequence_number(self):
return self.sequnce_number
def get_system_name(self):
return self.system_name
x = StateMachineSystems('TEST')
x.set_sequence_number('1234')
print(x.get_sequence_number())
y = StateMachineSystems('TEST')
print(y.get_sequence_number())
y.set_sequence_number('4321')
print(y.get_sequence_number())
print(x.get_sequence_number())
............
1234
1234
4321
4321