浅谈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统计文件行数示例分享
Feb 21 Python
RC4文件加密的python实现方法
Jun 30 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
python儿童学游戏编程知识点总结
Jun 03 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
python pyenv多版本管理工具的使用
Dec 23 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python调用飞书发送消息的示例
Nov 10 Python
Python函数中的不定长参数相关知识总结
Jun 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
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
结婚周年感言
2014/02/24 职场文书
委托书样本
2014/04/02 职场文书
爱国口号
2014/06/19 职场文书
银行进社区活动总结
2014/07/07 职场文书
协议书范文
2015/01/27 职场文书
教师考核表个人总结
2015/02/12 职场文书
会议通知范文
2015/04/15 职场文书
交心谈心活动总结
2015/05/11 职场文书
小学远程教育工作总结
2015/08/13 职场文书
中学政教处工作总结
2015/08/13 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技
设置IIS Express并发数
2022/07/07 Servers