python反射的妙用
反射的简单含义:
通过类名获得类的实例对象
通过方法名得到方法,实现调用
实例:
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反射的妙用的更多相关文章
- python 反射
python 反射的核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动! 反射的四个基本函数使用 hasattr,getattr,setatt ...
- python反射
python反射 python的反射是基于字符串的形式去对象(模块)中操作其成员.此操作是动态的,常用于web开发中url参数中对应模块或者函数的反射. 下面开始具体说明: 场景需求: 我的pytho ...
- Python反射机制理解
Python反射机制用沛齐老师总结的话说就是:利用字符串的形式去对象(模块)中操作(寻找)成员. getattr(object, name) object代表模块,name代表模块中的属性或成员,该函 ...
- 小学生绞尽脑汁也学不会的python(反射)
小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...
- Python反射和内置方法(双下方法)
Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...
- python反射问题
python中的__import__是以字符串的形式反射导入模块并以字符串的形式执行函数
- python 反射的使用
反射这个功能在很多编程语言中都有,在Python中自然也不例外.其实编程语言中的很多功能都能用简单的代码来验证. 在code代码之前,先简单的了解下反射的几个属性. hasattr(obj,name_ ...
- python 反射调用
因为目前在写一个python的项目,用到了Python的反射机制,所以做一下笔记,把写项目过程中的感悟记下来. 先简单介绍下Demo用到的函数: sys.path 是python的模块的路径集,是一个 ...
- python反射机制深入分析
对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...
随机推荐
- ruby bundle config 镜像映射配置
新增映射 : bundle config mirror.https://rubygems.org/ http://ruby.taobao.com #所有对source https://rubygems ...
- JavaWeb基础: ServletContext
基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...
- toolkit学习笔记
- ListView在列表的头部和底部添加布局——addHeaderView,addFooterView
addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 以addHeaderView为例: View he ...
- 如何使CSS3中的animation动画当每滑到一屏时每次都运行
这个我还没用过,但感觉以后会用到,就随手摘抄一下啦<div id="a1"></div> <div id="a2">< ...
- iOS开发UI篇—模仿ipad版QQ空间登录界面
iOS开发UI篇—模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...
- Oracle GoldenGate for Big Data 12.2.0.1的新特性
ogg for bigdata 12.2已经发布,新增有如下特性:支持java replicat进程OGG12.2中开发了基于java的replicat模式,以前的版本是基于extract进程中使用u ...
- linux网卡驱动移植
这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可 ...
- Android 学习第2课,下载 eclipse 工具
可以到http://www.ddooo.com/softdown/61745.htm 下载下来是32位与64位都有的 而且是汉化的,经测试成功,还可以,不错!
- firefox 不识别background-position-y / background-position-x
火狐不识别background-position-y 或background-position-x; 案例: 页面: 背景图: 一列按钮,点击时让当前背景图的background-position-y ...