单例模式小练习

import json
from ronglian_sms_sdk import SmsSDK



'''
这里SmsSDK其实我们只需要实例化一次就可以,多次实例化会产生多个名称空间 浪费资源
所以我们采用单例模式 通过重写__new__方法 让每次实例化类都是使用同一个名称空间 
'''
# 容联云参数
accId = '8aaf0708809721d00181328296ff3427'
accToken = '27c7493ea1ab4006a99cc46270f545f5'
appId = '8aaf0708809721d00181328297e7342e'
class Message:
    def __new__(cls, *args, **kwargs):
        # 判断类有没有_instance属性 有直接return cls._instance
        # 没有则调用父类的__new__()方法赋值给cls._instance,再return cls._instance
        if not hasattr(cls, '_instance'):
            # 通过调用父类的对象的__new__方法,并派生出自己新的属性
            cls._instance = super().__new__(cls, *args, **kwargs)
            cls._instance.sdk = SmsSDK(accId, accToken, appId)
        return cls._instance

    def send_msg(self, tid, mobile, datas):
        # 创建对象
        # sdk = SmsSDK(accId, accToken, appId)
        sdk = self.sdk
        resp = sdk.sendMessage(tid, mobile, datas)
        print(resp)
        print(type(resp))
        resp_json = json.loads(resp)
        if resp_json['statusCode'] == "000000":
            return True
        else:
            return False


if __name__ == '__main__':
    a=Message()
    a.send_msg('1','18850279021',('2333','4'))

 

posted @ 2022-06-05 20:53  _yessir  阅读(45)  评论(0)    收藏  举报