浅谈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 相关文章推荐
使用PDB模式调试Python程序介绍
Apr 05 Python
Python基础语法(Python基础知识点)
Feb 28 Python
Python 备份程序代码实现
Mar 06 Python
使用Python写一个小游戏
Apr 02 Python
Python requests库用法实例详解
Aug 14 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python实现名片管理系统项目
Apr 26 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
python连接mongodb集群方法详解
Feb 13 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 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 的几个配置文件函数
2006/12/21 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
js中less常用的方法小结
2017/08/09 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
python SocketServer源码深入解读
2019/09/17 Python
python集合常见运算案例解析
2019/10/17 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
社区敬老月活动实施方案
2014/02/17 职场文书
民主评议党员总结
2014/10/20 职场文书
实习班主任自我评价
2015/03/11 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书