python單例模式實例解析
更新時間:2018年08月28日 15:55:58 作者:屈逸
這篇文章主要為大家詳細(xì)介紹了python單例模式實例的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python單例模式的具體代碼,供大家參考,具體內(nèi)容如下
多次實例化的結(jié)果指向同一個實例
單例模式實現(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文件里內(nèi)容: import settings class MySQL: print('run...') def __init__(self, ip, port): self.ip = ip self.port = port instance = MySQL(settings.IP, settings.PORT)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
一文教會你利用Python程序讀取Excel創(chuàng)建折線圖
不同類型的圖表有不同的功能,柱形圖主要用于對比數(shù)據(jù),折線圖主要用于展示數(shù)據(jù)變化的趨勢,散點圖主要用于判斷數(shù)據(jù)的相關(guān)性,下面這篇文章主要給大家介紹了關(guān)于如何通過一文教你利用Python程序讀取Excel創(chuàng)建折線圖的相關(guān)資料,需要的朋友可以參考下2022-11-11python實現(xiàn)在windows下操作word的方法
這篇文章主要介紹了python實現(xiàn)在windows下操作word的方法,涉及Python操作word實現(xiàn)打開、插入、轉(zhuǎn)換、打印等操作的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04Python批量發(fā)送post請求的實現(xiàn)代碼
昨天學(xué)了一天的Python(我的生產(chǎn)語言是java,也可以寫一些shell腳本,算有一點點基礎(chǔ)),今天有一個應(yīng)用場景,就正好練手了2018-05-05