python的单例模式实现

在Python中,单例模式是一种设计模式,确保类只有一个实例,并提供一个全局访问点。以下是两种常见的Python单例模式实现方式:

使用模块(Module):
Python 的模块在一个程序中只会被导入一次,因此可以使用模块来实现单例模式。

# singleton.py

class Singleton:
    def __init__(self):
        self.value = None

    def set_value(self, value):
        self.value = value

    def get_value(self):
        return self.value

# 在其他模块中使用单例
# main.py
from singleton import Singleton

singleton_instance = Singleton()

singleton_instance.set_value(42)
print(singleton_instance.get_value())
使用装饰器:
使用装饰器来包装类,确保只有一个实例。

def singleton(cls):
    instances = {}

    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return get_instance

@singleton
class Singleton:
    def __init__(self):
        self.value = None

    def set_value(self, value):
        self.value = value

    def get_value(self):
        return self.value

# 在其他地方使用单例
singleton_instance = Singleton()
singleton_instance.set_value(42)
print(singleton_instance.get_value())
这两种方式都可以实现单例模式,选择哪一种取决于项目的需求和个人偏好。使用模块的方式更加简单直观,而使用装饰器的方式更加灵活,可以应用于多个类。

相关推荐

  1. python模式实现

    2024-03-15 13:40:03       37 阅读
  2. Python实现模式

    2024-03-15 13:40:03       34 阅读
  3. 模式实现

    2024-03-15 13:40:03       24 阅读
  4. PythonPython实现模式

    2024-03-15 13:40:03       61 阅读
  5. Python__new__方法及实现模式

    2024-03-15 13:40:03       23 阅读
  6. Python实现模式

    2024-03-15 13:40:03       74 阅读
  7. 如何使用Python实现模式

    2024-03-15 13:40:03       37 阅读
  8. python模式

    2024-03-15 13:40:03       61 阅读
  9. python模式

    2024-03-15 13:40:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 13:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 13:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 13:40:03       82 阅读
  4. Python语言-面向对象

    2024-03-15 13:40:03       91 阅读

热门阅读

  1. UE5 C++ TPS开发 学习记录(10

    2024-03-15 13:40:03       36 阅读
  2. EXEC sp_executesql 与 EXEC 的区别、使用场景和例子

    2024-03-15 13:40:03       44 阅读
  3. Android垃圾回收机制

    2024-03-15 13:40:03       41 阅读
  4. Unity3D MMORPG角色的UI血条管理详解

    2024-03-15 13:40:03       45 阅读
  5. linux下如何hook第三方播放器的视频数据?

    2024-03-15 13:40:03       37 阅读
  6. Ubuntu 根分区扩容

    2024-03-15 13:40:03       40 阅读
  7. RockChip Android13 修改U盘挂载目录

    2024-03-15 13:40:03       42 阅读
  8. 【笔记】学习Android.mk(四)

    2024-03-15 13:40:03       39 阅读
  9. 每天一个数据分析题(二百零六)

    2024-03-15 13:40:03       39 阅读
  10. jffs2文件系统挂载到Ubuntu,制作新的jffs2文件系统

    2024-03-15 13:40:03       39 阅读
  11. PyTorch学习笔记之基础函数篇(八)

    2024-03-15 13:40:03       31 阅读