浅谈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 相关文章推荐
python实现发送和获取手机短信验证码
Jan 15 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
python实现的config文件读写功能示例
Sep 24 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python while循环使用else语句代码实例
Feb 07 Python
Pandas对每个分组应用apply函数的实现
Dec 13 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类的使用 实例代码讲解
2009/12/28 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
python文件操作整理汇总
2014/10/21 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python简单验证码识别的实现方法
2019/05/10 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
学期研究性学习个人的自我评价
2014/01/09 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
老公给老婆的保证书
2014/04/28 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
雷峰塔导游词
2015/02/09 职场文书
起诉意见书范文
2015/05/19 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
python实现黄金分割法的示例代码
2021/04/28 Python
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技