python内置函数之attr【反射】
#Auther Bob
#--*--conding:utf-8 --*-- #我们来循序渐进的学习反射 import s1 #阶段1
# def run():
# url = input("请输入要访问的url:")
# if url == 'login':
# s1.login()
# elif url == 'logout':
# s1.logout()
# elif url == 'home':
# s1.home()
# else:
# print('404')
#
# run() #阶段2
#如果能根据用户输入的值自动找到s1中的函数名,那么上面的函数就会变的很简单,把字符串变为函数名 # import s1
# def run():
# url = input("请输入要访问的url:")
# #如果能用下面的方式,是不是就会变的很简单,但是实际上是不行的,但是我们可以通过反射来实现下面的效果
# # s1.url()
# #反射的作用:利用字符串的形式去对象(默认)中操作(寻找,判断,删除,设置)成员,就可以用gatarrer
# func = getattr(s1,url) #这个意思是去模块s1中,找一个名称为url的函数名,然后把这个值赋值给func,执行func就是可以s1模块中的url函数
# func()
# #这里还有一个问题,如果s1中没有url这个函数,则会报错,那么我们在执行getattr的时候先判断下函数名url是否存在
#
# run() #阶段3,先判断url是否在模块s1中
# import s1
# def run():
# url = input("请输入要访问的url:")
# if hasattr(s1,url):
# func = getattr(s1,url)
# func()
# else:
# print('404')
# run() #上面介绍了反射的两个函数:getattr和hasattr,反射还有两个函数delattr()和setattr()
# delattr() #模块中删除成员
# setattr() #模块中设置成员 # import s1
# def run():
# url = input("请输入要访问的url:")
# delattr(s1,'login')
# if hasattr(s1,'login'):
# print('login is exist')
# else:
# print('login is not exist')
#
# run() #上面的方法可以使用字符串的形式操作模块 #如果我们有很多的模块,成百上千,那么我们导入模块也会导致很多的模块,这也是个相当费力的工作,在importr的时候也可以用到
#反射 #下面的方法可以使用字符串的形式导入模块,__import__就可以实现,下面两种方法的效果是一样的 #
# import s1
# s1.login()
#
# obj = __import__('s1')
# obj.login # def run():
# url = input("请输入要访问的url:模块名/函数名:")
# mod,func = url.split('/')
# mod_obj = __import__(mod)
# f = getattr(mod_obj,func)
# f()
#
# run() #如果不用字符串的方式导入模块,我们导入其他模块的目录的模块是可以用下面的方法导致
# import lib.s1,但是如果用字符串的方式导入,则用这个方法是不可以的 obj = __import__('lib.' + 's3',fromlist=True)
print(obj)
# <module 'lib.s3' from 'E:\\python\\pycharm\\模块\\lib\\s3.py'> #这里查看obj,可以看到我们导入了s3这个模块 obj = __import__('lib.s3')
print(obj)
# <module 'lib' from 'E:\\python\\pycharm\\模块\\lib\\__init__.py'> #这里查看obj,可以看到我们没有导入s3这个模块
python内置函数之attr【反射】的更多相关文章
- python内置函数大全(分类)
python内置函数大全 python内建函数 最近一直在看python的document,打算在基础方面重点看一下python的keyword.Build-in Function.Build-in ...
- Python学习:6.python内置函数
Python内置函数 python内置函数,是随着python解释器运行而创建的函数,不需要重新定义,可以直接调用,那python的内置函数有哪些呢,接下来我们就了解一下python的内置函数,这些内 ...
- Python补充--Python内置函数清单
Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print(&quo ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- python 内置函数和函数装饰器
python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...
- Python基础篇【第2篇】: Python内置函数(一)
Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
- Python内置函数进制转换的用法
使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...
- Python内置函数(12)——str
英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string ...
随机推荐
- 搭建OpenStack先电云平台
实际操作示意图 在VMware里面创建两台centos7的虚拟机作为搭建云平台的两节点配置如下: 1.第一台虚拟机 作为控制节点 2CPU 3G以上内存 硬盘50G 网络适配器一个nat 一个仅主 ...
- VS2013下.Net Framework4配置FineUI4.14
配置步骤: 工具箱:空白处右键--选项卡--浏览,选择FineUI.dll配置web.config,管道模式设置为:传统 配置web.config 在form表单下添加: <f:PageMana ...
- Mybatis 接口绑定
MyBatis的接口绑定: 参考链接:http://blog.csdn.net/chris_mao/article/details/48836039 接口映射就是在IBatis中任意定义接口,然后把接 ...
- 小项目,吃货联盟,java初级小项目,源代码
1:项目的实现效果.功能如图所示. 2:项目的源代码如下: import java.util.Scanner; /** * 吃货联盟订餐管理系统 * */ public class OrderingM ...
- C# 中 PadLeft和PadRight 的用法
C# 中 PadLeft和PadRight 的用法 在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char pa ...
- ffmpeg同步
1:ffmpeg解码流程 拆包,构建队列,解码,同步,显示 //计算视频Frame的显示时间//获取ptspts = 0;//decodec video frameavcodec_decode_vid ...
- sqoop操作之ORACLE导入到HIVE
导入表的所有字段 sqoop import --connect jdbc:oracle:thin:@192.168.1.107:1521:ORCL \ --username SCOTT --passw ...
- CSS border-right-style属性设置元素的右边框样式
CSS border-right-style属性设置元素的右边框样式 边框的样式指的是边框的线条属性,指的是边框采用的是实线效果.短线效果还是其它的线条效果. border-right-style属性 ...
- springTask任务调度
1什么是任务调度 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作.常见的任务调度框架有Quartz和Sprin ...
- 给Jquery easyui 的datagrid 每行增加操作链接(转)
http://www.thinkphp.cn/code/207.html 通过formatter方法给Jquery easyui 的datagrid 每行增加操作链接我们都知道Jquery的EasyU ...