浅谈Python反射 & 单例模式


Posted in Python onMarch 21, 2019

反射

什么是反射?

  - 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)

  面向对象中的反射

  - 通过字符串的形式来操作(获取、检查、增加、删除)对象中的成员

  - 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反射 & 单例模式详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
centos6.4下python3.6.1安装教程
Jul 21 Python
python音频处理用到的操作的示例代码
Oct 27 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
python实现抖音视频批量下载
Jun 20 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
python的pip有什么用
Jun 17 Python
Django restful framework生成API文档过程详解
Nov 12 Python
五种Python转义表示法
Nov 27 Python
Python 内存管理机制全面分析
Jan 16 Python
详解Python中is和==的区别
Mar 21 #Python
浅谈Python的条件判断语句if/else语句
Mar 21 #Python
python使用thrift教程的方法示例
Mar 21 #Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 #Python
详解python使用turtle库来画一朵花
Mar 21 #Python
python中import与from方法总结(推荐)
Mar 21 #Python
python批量创建指定名称的文件夹
Mar 21 #Python
You might like
php自定义函数之递归删除文件及目录
2010/08/08 PHP
php实现微信公众号无限群发
2015/10/11 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
js实现星星打分效果
2020/07/05 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
北京SQL新华信咨询
2016/09/30 面试题
收银员岗位职责
2014/02/07 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
社会调查研究计划书
2014/05/01 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
小学元宵节活动总结
2015/02/06 职场文书
工会经费申请报告
2015/05/15 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL