浅谈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 相关文章推荐
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
基于python3实现socket文件传输和校验
Jul 28 Python
实例讲解python中的协程
Oct 08 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python中列表的切片与修改知识点总结
Jul 23 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python 实现矩阵填充0的例子
Nov 29 Python
python如何安装下载后的模块
Jul 03 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
k-means & DBSCAN 总结
Apr 27 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中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
javascript中的this详解
2014/12/08 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python实现Decorator模式实例代码
2018/02/09 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
普通大学毕业生自荐信
2013/11/04 职场文书
优秀英语专业毕业生求职信
2013/11/23 职场文书
小学生家长评语集锦
2014/01/30 职场文书
观后感格式
2015/06/19 职场文书
公司年会主持词范文!
2019/05/07 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
python - asyncio异步编程
2021/04/06 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
Promise静态四兄弟实现示例详解
2022/07/07 Javascript