反射的简单含义:

  通过类名获得类的实例对象

  通过方法名得到方法,实现调用

实例:

import sys
class Webserver(object):
def __init__(self,host,port):
self.host = host
self.port = port
def start(self):
print('Server is starting...')
def stop(self):
print('Server is stoping...')
def restart(self):
self.stop()
self.start()
print('Server is restarting')
def test(ins,name): # ins这里类似于self
print('test...')
ins.stop()
if __name__ == "__main__":
server = Webserver('local',333)
if hasattr(server,sys.argv[1]): #返回对象是否具有给定名称的属性。
func = getattr(server,sys.argv[1]) #从一个对象获得命名属性;getattr(x,y)相当于x.y。
func()
setattr(server,'test_run',test) # 将函数test方法加入到类Webserver里(实例化中的方法,而不是类方法) server为实例名称,test_run为加入到类下的方法名称 test为要加入到类中的方法(注意:test_run存储在实例中)
server.test_run(server,'name') # 将单独的方法加入到类中,方法内向调用类中的其他方法必须传入实例
if sys.argv[1] == 'restart':
server.restart()
#------------------------------删除方法,传入实例的话不能删除类下的普通方法,只能删除静态方法或者通过setattr增加的方法(传入类名,可删除类下的方法)
print(server.host)
delattr(server,'host')
print(server.host) #>>正确 server.test_run(server,'name')
delattr(server,'test_run')
server.test_run(server,'name') #>>正确 server.start()
delattr(server,'start')
server.start() #>>错误

python反射的妙用的更多相关文章

  1. python 反射

    python 反射的核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动! 反射的四个基本函数使用 hasattr,getattr,setatt ...

  2. python反射

    python反射 python的反射是基于字符串的形式去对象(模块)中操作其成员.此操作是动态的,常用于web开发中url参数中对应模块或者函数的反射. 下面开始具体说明: 场景需求: 我的pytho ...

  3. Python反射机制理解

    Python反射机制用沛齐老师总结的话说就是:利用字符串的形式去对象(模块)中操作(寻找)成员. getattr(object, name) object代表模块,name代表模块中的属性或成员,该函 ...

  4. 小学生绞尽脑汁也学不会的python(反射)

    小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...

  5. Python反射和内置方法(双下方法)

    Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...

  6. python反射问题

    python中的__import__是以字符串的形式反射导入模块并以字符串的形式执行函数

  7. python 反射的使用

    反射这个功能在很多编程语言中都有,在Python中自然也不例外.其实编程语言中的很多功能都能用简单的代码来验证. 在code代码之前,先简单的了解下反射的几个属性. hasattr(obj,name_ ...

  8. python 反射调用

    因为目前在写一个python的项目,用到了Python的反射机制,所以做一下笔记,把写项目过程中的感悟记下来. 先简单介绍下Demo用到的函数: sys.path 是python的模块的路径集,是一个 ...

  9. python反射机制深入分析

    对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...

随机推荐

  1. Android Hook Dexposed原理小析

    dexposed是阿里巴巴在xposed框架上面开发的hotpatch一套框架 当然hotpatch的方式有很多,这里先介绍下dexposed原理 Demo中有个test函数, 在调用hook之前正常 ...

  2. 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法

    /* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...

  3. 与您共享Linux Kernel 4.8分支首个维护版本

    导读 Linux Kernel 4.8正式版于10月2日由Linus Torvalds发布,带来了包括AMDGPU OverDrive支持.NVIDIA Pascal支持.AMDGPU PowerPl ...

  4. 拓扑编号 vijos1790

    题意就是拓扑排序,要求1的序号尽可能小,然后2的序号尽可能小,3,4... 一开始很容易想到直接贪心,每次选一个入度为0的点,如果有多个,就选编号最小的那个,但是很容易找到反例. 看了下题解,应该是反 ...

  5. BCG界面库下的Windows8 UI界面样式www.webui8.com

    BCG界面库下的Windows8 UI界面样式(Metro风格)控件主要有以下一些功能: 规则的大块磁贴 支持完整键盘导航 Tile组 标题(Caption) 标题按钮(Caption buttons ...

  6. 升级设置win2008r2开发环境,遇到问题小结

    升级设置2008r2开发环境,是一般程序员经历的事情.许多从vs 2003,vs2005+sql2000+win2003过来,但是,时间推移,技术革新,64位的推行.架构的变化和强大.我们也只可以学习 ...

  7. 【转】NHibernate:no persister for 异常

    1.配置文件后缀名写错 mapping file 必须是.hbm.xml结尾 2.Web.config配置里面引用实体 <session-factory> <mapping asse ...

  8. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  9. This tag and its children can be replaced by one <TextView/> and a compound drawable

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. 黑马程序员——【Java基础】——正则表达式

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1. 概念:符合一定规则的表达式. 2. 作用:用于专门操作字符串. 3. 特点:用一些特定的符 ...