首页 > 代码库 > Python开发【第一篇】Python基础之反射

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基础之反射