1. Use decorators
import time
from xxlimited import foo
def singleton(cls):
instance={
}
def wrapper(*args,**kwargs):
if cls not in instance:
instance[cls]=cls(*args,**kwargs)
print(f'new')
return instance[cls]
return wrapper
@singleton
class Foo(object):
pass
fooArray =[]
for index in range(100):
fooArray.append(index)
print(index)
fooArray[index]=Foo()
print(f'1:fooArray[index]:{
fooArray[index]}****'+str(type(fooArray[index])))
time.sleep(0.1)
2. Use base classes
class Singleton(object):
def __new__(cls,*args,**kwagrs):
if not hasattr(cls,'_instance'):
cls._instance=super(Singleton,cls).__new__(cls,*args,**kwagrs)
return cls._instance
class Foo2(Singleton):
pass
fooArray =[]
for index in range(100):
fooArray.append(index)
print(index)
fooArray[index]=Foo2()
print(f'2:fooArray[index]:{
fooArray[index]}****'+str(type(fooArray[index])))
time.sleep(0.1)