#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【反射】的更多相关文章

  1. python内置函数大全(分类)

    python内置函数大全 python内建函数 最近一直在看python的document,打算在基础方面重点看一下python的keyword.Build-in Function.Build-in ...

  2. Python学习:6.python内置函数

    Python内置函数 python内置函数,是随着python解释器运行而创建的函数,不需要重新定义,可以直接调用,那python的内置函数有哪些呢,接下来我们就了解一下python的内置函数,这些内 ...

  3. Python补充--Python内置函数清单

    Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print(&quo ...

  4. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  5. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  6. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  7. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  8. Python内置函数进制转换的用法

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

  9. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

随机推荐

  1. Xss漏洞原理分析及简单的讲解

    感觉百度百科 针对XSS的讲解,挺不错的,转载一下~   XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XS ...

  2. xshell配置通过堡垒机直接登陆到内网机器

    在xshell中文件-->新建菜单,打开新建会话属性,填写堡垒机的IP端口和账号密码后,进入登录脚本 : 勾选"执行以下的期望和发送组合对(X) " (1)添加: 期望: 发 ...

  3. spark 应用程序部署工具 spark-submit

    打包 Spark application 使用spark-submit启动Spark application spark-submit usage spark-submit option 运行模式相关 ...

  4. mongodb中查询返回指定字段

    mongodb中查询返回指定字段   在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段.  ...

  5. Tomcat组成与工作原理

    laosijikaichele 关注  0.2 2018.06.02 10:44 字数 5175 阅读 2798评论 0喜欢 8 原文:https://juejin.im/post/58eb5fdda ...

  6. IP Editor IP控件

    HWND hIpEdit; void __fastcall TForm2::FormCreate(TObject *Sender) { hIpEdit = CreateWindow(WC_IPADDR ...

  7. 内容方框 fieldset

    Title 登录 用户名 密码 <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  8. gevent 实现io自动切换,gevent.join([]), gevent.spawn, 爬虫多并发的实现

    gevent 是一个第三方库,可以很容易的实现遇到io(文件传输)操作时,程序自动跳转到下一个程序 例一: 用gevent.sleep()  来模拟io操作 import gevent def foo ...

  9. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

    这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...

  10. block元素和inline元素的特点

    一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置height/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间 ...