python單例模式實(shí)例解析
本文實(shí)例為大家分享了python單例模式的具體代碼,供大家參考,具體內(nèi)容如下
多次實(shí)例化的結(jié)果指向同一個(gè)實(shí)例
單例模式實(shí)現(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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解python實(shí)現(xiàn)小波變換的一個(gè)簡(jiǎn)單例子
- Python中實(shí)現(xiàn)單例模式的n種方式和原理
- 詳解python實(shí)現(xiàn)線程安全的單例模式
- Python中單例模式總結(jié)
- Python中實(shí)現(xiàn)遠(yuǎn)程調(diào)用(RPC、RMI)簡(jiǎn)單例子
- Python操作json數(shù)據(jù)的一個(gè)簡(jiǎn)單例子
- 5種Python單例模式的實(shí)現(xiàn)方式
- 常見(jiàn)的在Python中實(shí)現(xiàn)單例模式的三種方法
- python單例設(shè)計(jì)模式實(shí)現(xiàn)解析
相關(guān)文章
一文教會(huì)你利用Python程序讀取Excel創(chuàng)建折線圖
不同類(lèi)型的圖表有不同的功能,柱形圖主要用于對(duì)比數(shù)據(jù),折線圖主要用于展示數(shù)據(jù)變化的趨勢(shì),散點(diǎn)圖主要用于判斷數(shù)據(jù)的相關(guān)性,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文教你利用Python程序讀取Excel創(chuàng)建折線圖的相關(guān)資料,需要的朋友可以參考下2022-11-11
Python中的Request請(qǐng)求重試機(jī)制
這篇文章主要介紹了Python中的Request請(qǐng)求重試機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
深入理解NumPy簡(jiǎn)明教程---數(shù)組1
這篇文章主要介紹了深入理解NumPy簡(jiǎn)明教程(二、數(shù)組1),NumPy數(shù)組是一個(gè)多維數(shù)組對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12
python實(shí)現(xiàn)在windows下操作word的方法
這篇文章主要介紹了python實(shí)現(xiàn)在windows下操作word的方法,涉及Python操作word實(shí)現(xiàn)打開(kāi)、插入、轉(zhuǎn)換、打印等操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python批量發(fā)送post請(qǐng)求的實(shí)現(xiàn)代碼
昨天學(xué)了一天的Python(我的生產(chǎn)語(yǔ)言是java,也可以寫(xiě)一些shell腳本,算有一點(diǎn)點(diǎn)基礎(chǔ)),今天有一個(gè)應(yīng)用場(chǎng)景,就正好練手了2018-05-05

