シングルトンを作成しました これがクラスの説明です。
allsms.py
from DB.models import ApiKey,ServiceProvider
from DB.messagenet import MessageNet
class SMSMgr( object ):
_instance = None
_allsp = []
def __init__(self):
pass
def __new__(cls, *args, **kwargs):
if not cls._instance :
cls._instance = super(SMSMgr, cls).__new__(
cls, *args, **kwargs)
return cls._instance
def loadsettings(self):
get_all_sp = ServiceProvider.objects.filter(status = False)
for obj in get_all_sp:
cla = obj.class_Name
a=globals()[str(obj.class_Name)](obj.userName,obj.password,obj.sendingurl)
self._allsp.append(a)
#print self._allsp
def reload(self):
self._allsp = []
get_all_sp = ServiceProvider.objects.filter(status = False)
for obj in get_all_sp:
cla = obj.class_Name
a=globals()[str(obj.class_Name)](obj.userName,obj.password,obj.sendingurl)
self._allsp.append(a)
def send(self):
print "+++++++++++++++++++== Global send "
if __name__ == "__main__":
b = SMSMgr()
b.loadsettings()
今test.py
、同じディレクトリのファイルで、_allsp
変数に格納されているシングルトン オブジェクトを使用しようとしています。
from SMShandler.allsms import SMSMgr
b = SMSMgr()
#b.loadsettings()
print b._allsp
これは空のリストを印刷しています。しかし、私がこのようにしているとき:
b = SMSMgr()
b.loadsettings()
print b._allsp
オブジェクトのリストを出力しています。
私の質問は、上記のデザインがシングルトンの場合、なぜprint b._allsp
空のリストを印刷するのtest.py
ですか? 私はすでにファイルにロードloadsettings
していallsms.py
ます。