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 ...
随机推荐
- mysql 不同事务隔离级别
repeatable read 在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集. 标准的repeatable read是允许幻读的,因为这一级 ...
- Leetcode 之Simplify Path @ python
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- 关于win时间同步的解决方案
将以下的批处理执行:net stop w32time sc config w32time start= auto net start w32time w32tm /config /update /ma ...
- springMVC 是单例还是的多例的?
曾经面试的时候有面试官问我spring的controller是单例还是多例,结果我傻逼的回答当然是多例,要不然controller类中的非静态变量如何保证是线程安全的,这样想起似乎是对的,但是不知道( ...
- OpenGL 多线程共享纹理
1:opengl 多线程共享纹理纹理: //解码时候使用opengl进行绘制,需要构建队列和两个线程,分别用于解码数据并且填充纹理和渲染. 主线程常见两个共享上下文: main() { ⋯⋯⋯⋯ gH ...
- SPM——Using Maven+Junit to test Hello Wudi
Last week, ours teacher taught us 'Software Delivery and Build Management'. And in this class, our t ...
- 代码生成器 CodeSmith 的使用(一)
由于在项目中经常要会用到数据库的 CRUD 操作(增.删.改.查),而且还使用的是orm 框架将数据库表名和表中的的字段映射成相应的类属性.如果把大量的时间用到手工输入数据库表中的字段,除了能练习打字 ...
- python入门-操作列表
1 Python根据缩进来进行判断代码行与前一个代码行的关系 for name in names: print(name) names = ['baker','david','philp','rose ...
- C# IIS 服务器 HTTP 错误 500.21 - Internal Server Error 解决办法
<1> 管理员身份启动控制台 <2> 输入 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe ...
- JS计算时间差值
var d = '2016 04 30 11:28:04'; var currentDate = new Date();//当前时间 var endDate = new Date(d); //结束时间 ...