Python-实现单例的多种方式(类、函数、自定义)
""" 单例类 方法1:外部函数实现 方法2:外部类数实现 方法3:__new__内置函数实现 __new__函数:在实例化开始时,在调用初始化__init__() 方法之前, 首先调用 __new__() 方法 """ def singleton(cls): """ 修饰类(实现类单例) @param cls: """ instances = {} def inner(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args,**kwargs) return instances[cls] return inner #修饰类(实现类单例) class Singleton(object): def __init__(self, cls): self._cls = cls self._instance = {} def __call__(self): if self._cls not in self._instance: self._instance[self._cls] = self._cls() return self._instance[self._cls] #内置函数(实现类单例) class Singleton1(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, '_inst'): cls._inst = super(Singleton1, cls).__new__(cls) return cls._inst #内置函数(实现类单例) class Singleton2(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, '_inst'): cls._inst = object.__new__(cls) return cls._inst #自定义单列 class Person(object): def __new__(cls, name, age): if 0 < age < 100: return object.__new__(cls) else: return None def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f'{self.__class__.__name__}{self.__dict__}' if __name__ == '__main__': s1 = Singleton1() s2 = Singleton1() print(s1) print(s2) p1 = Person('Tom', 10) p2 = Person('Mike', 200) print(p1) print(p2)
""" 单例函数 """ token=None def get_token(): global token if token is None: token='123' return token if __name__ == '__main__': print(get_token()) print(get_token())
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2020-04-13 Mysql查询字段与关键字重名