python單例模式實例解析
更新時間:2018年08月28日 15:55:58 作者:屈逸
這篇文章主要為大家詳細介紹了python單例模式實例的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python單例模式的具體代碼,供大家參考,具體內容如下
多次實例化的結果指向同一個實例
單例模式實現(xiàn)方式
方式一:
import settings
class MySQL:
__instance = None
def __init__(self, ip, port):
self.ip = ip
self.port = port
@classmethod
def from_conf(cls):
if cls.__instance is None:
cls.__instance = cls(settings.IP,settings.PORT)
return cls.__instance
obj1 = MySQL.from_conf()
obj2 = MySQL.from_conf()
obj3 = MySQL.from_conf()
print(obj1)
print(obj2)
print(obj3)
方式二:
import settings
def singleton(cls):
_instance = cls(settings.IP, settings.PORT)
def wrapper(*args, **kwargs):
if args or kwargs:
obj = cls(*args, **kwargs)
return obj
return _instance
return wrapper
@singleton
class MySQL:
def __init__(self, ip, port):
self.ip = ip
self.port = port
obj1 = MySQL()
obj2 = MySQL()
obj3 = MySQL()
print(obj1)
print(obj2)
print(obj3)
方式三:
import settings
class Mymeta(type):
def __init__(self, class_name, class_bases, class_dic):
self.__instance = self(settings.IP, settings.PORT)
def __call__(self, *args, **kwargs):
if args or kwargs:
obj = self.__new__(self)
self.__init__(obj, *args, **kwargs)
return obj
else:
return self.__instance
class MySQL(metaclass=Mymeta):
def __init__(self, ip, port):
self.ip = ip
self.port = port
obj1 = MySQL()
obj2 = MySQL()
obj3 = MySQL()
print(obj1)
print(obj2)
print(obj3)
方式四:
def f1():
from singleton import instance
print(instance)
def f2():
from singleton import instance,MySQL
print(instance)
obj = MySQL('1.1.1.1', '3389')
print(obj)
f1()
f2()
singleton.py文件里內容:
import settings
class MySQL:
print('run...')
def __init__(self, ip, port):
self.ip = ip
self.port = port
instance = MySQL(settings.IP, settings.PORT)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python 實現(xiàn)加密過的PDF文件轉WORD格式
這篇文章主要介紹了Python 實現(xiàn)加密過的PDF文件轉WORD格式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
python使用numpy實現(xiàn)直方圖反向投影示例
今天小編就為大家分享一篇python使用numpy實現(xiàn)直方圖反向投影示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python PyAutoGUI實現(xiàn)自動化任務應用場景示例
這篇文章主要為大家介紹了Python PyAutoGUI實現(xiàn)自動化任務應用場景示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12

