当前位置: 首页 > news >正文

028网站建设网址之家大全

028网站建设,网址之家大全,云南app软件开发,青岛济南网站制作Python单例模式 1、使用模块(推荐)2、使用装饰器3、使用new()方法 单例模式是最常见的一种设计模式,该模式确保系统中一个类仅有一个实例 常用的三种实现方式如下: 1、使用模块(推荐) 模块是天然单例的&a…

Python单例模式

    • 1、使用模块(推荐)
    • 2、使用装饰器
    • 3、使用new()方法


单例模式是最常见的一种设计模式,该模式确保系统中一个类仅有一个实例

常用的三种实现方式如下:

1、使用模块(推荐)


模块是天然单例的,因为模块只会被加载一次,加载后,其他脚本若导入使用时,会从sys.modules中找到已加载好的模块,多线程下也是如此

编写Singleton.py脚本:

class MySingleton():def __init__(self, name, age):self.name = nameself.age = age

其他脚本导入使用:

from Singleton import MySingletonsingle1 = MySingleton('Tom', 18)
single2 = MySingleton('Bob', 20)print(single1 is single2)     # True

2、使用装饰器

# 编写一个单例模式的装饰器,来装饰哪些需要支持单例的类
from threading import RLockdef Singleton(cls):single_lock = RLock()instance = {}def singleton_wrapper(*args, **kwargs):with single_lock:if cls not in instance:instance[cls] = cls(*args, **kwargs)return instance[cls]return singleton_wrapper@Singleton
class MySingleton(object):def __init__(self, name, age):self.name = nameself.age = age# 该方式线程不安全,需要加锁校验single1 = MySingleton('Tom', 18)
single2 = MySingleton('Bob', 20)print(single1 is single2)     # True

3、使用new()方法


Python的__new__()方法是用来创建实例的,可以在其创建实例的时候进行控制

class MySingleton(object):single_lock = RLock()def __init__(self, name, age):self.name = nameself.age = agedef __new__(cls, *args, **kwargs):with MySingleton.single_lock:if not hasattr(MySingleton, '_instance'):MySingleton._instance = object.__new__(cls)return MySingleton._instancesingle1 = MySingleton('Tom', 18)
single2 = MySingleton('Bob', 20)print(single1 is single2)     # True
http://www.hkea.cn/news/557499/

相关文章:

  • 网站的整体结构百度云网盘资源搜索引擎入口
  • 咸阳网站建设哪家专业杭州优化公司在线留言
  • 地板网站建设门户网站
  • 新增备案网站负责人人工智能培训心得体会
  • 帮境外赌场做网站是否有风险百度企业号
  • 网站换了服务器百度seo排名优化公司哪家好
  • 海南网站建设制作网络营销效果评估
  • 飞阳建设网站上海广告公司
  • 营销网站导航栏常见网站搜索排名靠前
  • 深圳市政府网站官网百度地图疫情实时动态
  • 上海建设工程咨询网 首页深圳优化排名公司
  • 杭州哪个网站建设最好做网站的网络公司
  • 制作一个网站步骤东莞网络营销销售
  • 专业的营销网站建设公司百度联盟注册
  • 机械类网站用什么做背景指数运算法则
  • 微信如何绑定网站加速游戏流畅的软件
  • 茂名整站优化百度问答首页
  • 手机网站搭建网络宣传方式
  • 2003网站建设网站seo哪家公司好
  • 成都学校网站制作2022年国际十大新闻
  • 工厂外贸网站建设台州网络推广
  • 酒店网站建设方案策划百度seo怎么做网站内容优化
  • 网站更改公司需要重新备案吗搜索网页内容
  • 现在做网站还用dw做模板了吗成人电脑速成培训班
  • 做app要不要建网站刚开的店铺怎么做推广
  • 做生存分析的网站有哪些专业的网站优化公司
  • 网站双倍浮动百度联盟app
  • 北京网站设计确保代码符合w3c广州网络营销的推广
  • 做网站实名认证有什么用百度移动端模拟点击排名
  • 知更鸟wordpress 怎样沈阳百度seo关键词优化排名