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
您可能感兴趣
- pythonrequests怎么导入模块(Python3使用requests模块实现显示下载进度的方法详解)
- python列出文件夹下所有文件(python批量修改文件夹及其子文件夹下的文件内容)
- python指定参数教程(详解Python传入参数的几种方法)
- python中统计一个字符出现的次数(Python统计一个字符串中每个字符出现了多少次的方法字符串转换为列表再统计)
- python怎么去掉字符串的空格(Python切片操作去除字符串首尾的空格)
- python中怎么实现登录程序(详解Python用户登录接口的方法)
- python表白代码演示(python3实现表白神器)
- 学会python一月能赚多少钱(学习python的前途 python挣钱)
- pythonmatplotlib绘制立体图形(python3使用matplotlib绘制散点图)
- 怎么用python实现链表(Python3实现的判断回文链表算法示例)
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- python最基本的编程工具(5款Python程序员高频使用开发工具推荐)
- python爬取微博登录数据(Python实现爬取马云的微博功能示例)
- python使用django搭建简单网页(Python后台开发Django的教程详解启动)
- python取当前日期(Python实现根据日期获取当天凌晨时间戳的方法示例)
- pythonai识别算法(Python3调用百度AI识别图片中的文字功能示例测试可用)
- 挑战新国标电自天花板,九号机械师MMAX 110P深度体验(挑战新国标电自天花板)
- 《满江红》不要只当电影看,学生应该这样做(满江红不要只当电影看)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
热门推荐
- 网站让浏览器崩溃的原因
- 如何禁止按回车键提交表单
- ubuntu20.04安装启动问题(安装ubuntu18.04报:failed to load ldlinux.c32的问题及解决步骤)
- 关闭ssl证书验证模块(开启OCSP提升https证书验证效率解决Let’s Encrypt SSL证书访问慢的问题)
- docker管理脚本(Docker可视化ui管理工具Portainer安装及使用解析)
- flask项目微信小程序(Python Flask 搭建微信小程序后台详解)
- linuxdocker命令使用教程(seata docker 高可用部署的详细介绍)
- webapp隐藏地址栏
- asp.net网站如何优化
- Windows2012配置SQLServer2014AlwaysOn的图解(Windows2012配置SQLServer2014AlwaysOn的图解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9