反射

什么是反射?

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

面向对象中的反射

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

- 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学习 :反射 & 单例模式的更多相关文章

  1. day28 python学习反射 sinstance和issubclass

    isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 判断这个对象是不是这个类,或者是不是这个类的子类的实例化 class Foo( ...

  2. Python学习笔记之在Python中实现单例模式

    有些时候你的项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在Python中实现单例模式并不是什么难事.以下总结几种方法: 使用类装饰器 使用装饰器实现单例类的时候,类本身并不知道自 ...

  3. python学习——单例模式

    在python中,单例模式在面试中非常重要.下面来给大家推荐一个Python中实现单例模式的博客地址. https://www.cnblogs.com/huchong/p/8244279.html

  4. Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究

    Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: ​ 反射的概念是由Smith在1982年首次提出的 ...

  5. Python学习之==>面向对象编程(二)

    一.类的特殊成员 我们在Python学习之==>面向对象编程(一)中已经介绍过了构造方法和析构方法,构造方法是在实例化时自动执行的方法,而析构方法是在实例被销毁的时候被执行,Python类成员中 ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. Python学习总结:目录

    Python 3.x总结 Python学习总结[第一篇]:Python简介及入门 Python学习总结[第二篇]:Python数据结构 Python学习总结[第三篇]:Python之函数(自定义函数. ...

  8. Python 学习笔记大纲

    Python Basic 第一章:Python基础の快速认识基本语法 (点击进入博客)我的第一个HelloPython程序.如何实现用户输入.Python的自带电池(模块).变量.格式化.条件判断.循 ...

  9. python学习总结---学习交流群里的问题总结

    xml里面的过滤: <record id="action_partner_supplier_form_demo_ms" model="ir.actions.act_ ...

  10. Python学习(二)Python 简介

    Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...

随机推荐

  1. aspnetcore 认证相关类简要说明二

    能过<aspnetcore 认证相关类简要说明一>我们已经了解如何将AuthenticationOptions注入到我们依赖注入系统.接下来,我们将了解一下IAuthenticationS ...

  2. Git Hub 使用手册参考

    参考信息 1.http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0002.http://ww ...

  3. August 10th 2017 Week 32nd Thursday

    Break through the psychological barrier to surpass themselves. 突破心理障碍,才能超越自己. To break through those ...

  4. T-SQL批处理

    批处理简介 批处理是作为一个逻辑单元的T-SQL语句.如果一条语句不能通过语法分析,那么不会运行任何语句.如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经运行了. 为了将一个脚本分为多个批 ...

  5. window下使用SetUnhandledExceptionFilter捕获让程序的崩溃(转)

    简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃 虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束.并且发送 ...

  6. 内网渗透之IPC,远程执行

    开启服务 net start Schedule net start wmiApSrv 关闭防火墙 net stop sharedaccess net use \\目标IP\ipc$ "&qu ...

  7. 【转】iphone 输入/输出流异步读写数据

    原文:iphone 输入/输出流异步读写数据 分类: iphone2012-05-30 14:50 2484人阅读 评论(1) 收藏 举报 iphoneattributesinterfacepaths ...

  8. jq复制到剪切板插件clipboard.min.js(兼容IE9)

    /*! * clipboard.js v1.5.5 * https://zenorocha.github.io/clipboard.js * * Licensed MIT 漏 Zeno Rocha * ...

  9. java @XmlTransient与@Transient区别

    1.@XmlTransient a.@XmlTransient 注解解决 JavaBean 属性名称与字段名称之间的名称冲突,或者用于防止字段/属性的映射 b.阻止将 JavaBean 属性映射到 X ...

  10. 【[SHOI2007]园丁的烦恼】

    \(CDQ\) 分治的神奇操作 这个问题跟偏序问题好像差的不小啊 但是就是可以转化过去 对于一个查询我们可以把它拆成四个,也就是用二维前缀和的方式来查询 我们发现其实前缀和的定义就是多少个点的横纵坐标 ...