Python开发第一篇Python基础之反射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发第一篇Python基础之反射相关的知识,希望对你有一定的参考价值。

反射

反射的作用:反射得作用是提高代码可读行。

__import__导入模块和import导入模块的区别:

__import__导入模块是通过字符串进行导入。
import是常用得导入模块方法。

反射常用到得4个内置函数分别为:getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员。

实例:

最初模块调用是这样得:

# commons.py

def login():
    print(‘炫酷的登录页面‘)


def logout():
    print(‘炫酷的退出页面‘)


def home():
    print(‘炫酷的主页面‘)

# index.py

import commons
def run():
    inp = input(‘请输入要访问的url:‘)
    if inp == ‘login‘:
        commons.login()
    elif inp == ‘logout‘:
        commons.logout()
    elif inp == ‘home‘:
        commons.home()
    else:
        print(‘404‘)

用了反射后是这样得:

#commons.py

def login():
    print(‘炫酷的登录页面‘)


def logout():
    print(‘炫酷的退出页面‘)


def home():
    print(‘炫酷的主页面‘)

#index.py

import commons


def run():
    inp = input(‘请输入要访问的url:‘)
    # inp字符串类型 inp = "login"
    # 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员
	# delattr()
	# setattr()
    if hasattr(commons, inp):
        func = getattr(commons,inp)
        func()
    else:
        print(‘404‘)
		
if __name__ == ‘__main__‘:
    run()

模块也可以通过字符串进行导入:

def run():
    # account/login
    inp = input(‘请输入要访问的url:‘)
    # inp字符串类型 inp = "login"
    # 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员
    # delattr()
    # setattr()
    m, f = inp.split(‘/‘)
    obj = __import__(m)
    if hasattr(obj, f):
        func = getattr(obj,f)
        func()
    else:
        print(‘404‘)

if __name__ == ‘__main__‘:
    run()

技术分享

技术分享

技术分享

技术分享

 

对于反射小节:

1、根据字符串的形式导入模块。
2、根据字符串的形式去对象(某个模块)中操作其成员。

 

以上是关于Python开发第一篇Python基础之反射的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第一篇Python基础之字符串格式化

Python开发第一篇Python基础之正则表达式补充

Python开发第一篇:目录

Python自动化基础第一篇:目录

佩奇---Python开发第一篇:目录

python开发第一篇:目录