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 ...
随机推荐
- Jquery判断IE6等浏览器的代码
这好像是由几篇代码接在一起的,原文均来自网络,不记得出处了~ jquery中利用navigator.userAgent.indexOf来判断浏览器类型,并进行了一下处理,如果不想使用jquery,稍为 ...
- javascript节点操作insertBefor()
如果想要把节点放在某个特定的位置,而不是放在末尾,就可以使用insertBefore(a,b) 参数a:要插入的节点 参数b:作为参照的节点. var oDiv = document.getEleme ...
- 关于单独使用ckfinder时去除版本号和提示信息的破解
前端时间用ckfinder2.3时 吧他破解了 发现在火狐下报了一个这个错.....getItem() is undefinder 一气之下就把报错的那句话if()语句给删了 没想到歪打正着 ...
- python 之路06day
一 字符编码 1 字符编码的定义: 计算机要想工作必须通电,即用‘电’驱使计算机干活,也就是说‘电’的特性决定了计算机的特性.电的特性即高低电平(人类从逻辑上将二进制数1对应高电平,二进制数0 ...
- uva-10194-排序
题意: 如果一个队伍的得分比对方高,那么就赢得这场游戏,很明显,如果得分低那就是输了,如果俩个队伍的得分一样,那么就是平局,赢得比较获得3个点的得分,平手1个点的得分,输了0分.排序规则如下1:得分点 ...
- 解决Specifying a namespace in include()withou providing an app_name
python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题.请在[app_name] ...
- RAD 10.1多标签页bug
frm->Parent= ActiveControl取不到了 ::setparent(frm-> 多屏幕显示器,次副屏幕上无法最大化了. ::SetParent(myform->Ha ...
- 在spring中实现quartz的动态调度(开始、暂停、停止等)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fantasic_van/article/details/74942062 需求: 需要在页面设定某个 ...
- Maven打包跳过测试,文档生成
运行mvn install时跳过Test 方法一: <project> [...] <build> <plugins> <plugin> <gro ...
- 转载:mysql数据同步redis
from: http://www.cnblogs.com/zhxilin/archive/2016/09/30/5923671.html 在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终 ...