python单例编程(浅谈Python反射 & 单例模式)
类别:脚本大全 浏览量:932
时间:2021-10-28 10:23:24 python单例编程
浅谈Python反射 & 单例模式反射
什么是反射?
- 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)
面向对象中的反射
- 通过字符串的形式来操作(获取、检查、增加、删除)对象中的成员
- python中的一切事物都是对象(都可以使用反射)
四个可以实现自省的函数:
- getattr() 获取属性
- hasattr() 判断对象中是或否拥有特定的值
- setattr() 设置属性
- delattr(obj,'gender') 删除属性
|
class Info: def __init__( self ,name,age,gender): self .name = name self .age = age self .gender = gender def show( self ): return '%s - %s' % ( self .name, self .age) obj = Info( 'alex' , '20' , '男' ) b = 'name' print (obj.__dict__[b]) print (obj.__dict__[ 'name' ]) #getattr() inp = input ( '请输入想要获取的内容:' ) v = getattr (obj,inp) print (v) func = getattr (obj, 'show' ) v = func() print (v) #hasattr() print ( hasattr (obj, 'name' )) #setattr() setattr (obj, 'k1' , 'v1' ) #delattr(obj,'gender') obj.gender # 此时报错,Info类中的gender对象已被删除 |
操作类对象:
|
class Info( object ): staticField = "Hello World!" def __init__( self ): self .name = 'mike' def func( self ): return 'func' @staticmethod def bar(): return 'bar' print ( getattr (Info, 'staticField' )) print ( getattr (Info, 'func' )) # 返回函数的内存地址 print ( getattr (Info, 'bar' )) # 返回函数的内存地址 |
单例模式
什么是单例模式?
- 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。
- 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
- 单例,永远使用同一份实例(对象)。单例模式能够有效地节约内存资源。
实现单例模式:
|
class Info: __v = None @classmethod def get_instance( cls ): if cls .__v: return cls .__v else : cls .__v = Info() return cls .__v obj1 = Info.get_instance() print (obj1) obj2 = Info.get_instance() print (obj2) |
以上所述是小编给大家介绍的Python反射 & 单例模式详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/ArticleYeung/p/10562744.html
您可能感兴趣
- python中for语句的无限循环(python使用for循环计算0-100的整数的和方法)
- python的基本函数及用法(Python3.6.x中内置函数总结及讲解)
- python数据结构全攻略(详解python数据结构和算法)
- python的条件判断和循环(对Python中的条件判断、循环以及循环的终止方法详解)
- python怎么提取微信数据(使用Python+wxpy 找出微信里把你删除的好友实例)
- python分词操作(Python英文文本分词无空格模块wordninja的使用实例)
- python实现七个基本算法(python实现维吉尼亚算法)
- 百度免费翻译接口(基于python实现百度翻译功能)
- python读取和写入数据excel(Python向excel中写入数据的方法)
- python有哪几种赋值(关于python多重赋值的小问题)
- linux切换python版本(linux安装python修改默认python版本方法)
- pythonselenium自动化使用教程(selenium python 实现基本自动化测试的示例代码)
- python测试websocket接口(Python如何爬取实时变化的WebSocket数据的方法)
- python 文本分析 摘要(用Python逐行分析文件方法)
- python 验证码识别模块([机器视觉]使用python自动识别验证码详解)
- python转换doc到pdf(利用python将图片版PDF转文字版PDF)
- 真牛 禹州将建成中等城市(禹州将建成中等城市)
- 被骂欺师灭祖,与郭德纲公开叫板,何云伟改名何沄伟,开始画画了(与郭德纲公开叫板)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
热门推荐
- python中读取文件怎么操作(Python实现的读取文件内容并写入其他文件操作示例)
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- mysql5.7详细安装教程(MySQL5.7.33安装过程图文详解)
- 读取浏览器历史的行为(解析浏览器的一些“滚动”行为鉴赏)
- sqlserver复制表结构及数据到新表(SQL SERVER 表与表之间 字段一对多sql语句写法)
- vuex中action的值怎么接(vuex中Getter的用法详解)
- python把str转成list(python3 字符串/列表/元组str/list/tuple相互转换方法及join函数的使用)
- html5自定义字体图标(HTML5给汉字加拼音收起展开组件的实现代码)
- ASP.NET中异常处理的注意事项
- 私有云服务器是什么意思(私有云服务器选择配置的依据是什么?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9