python获取maco句柄_python之反射

#!/usr/bin/env python#-*- coding: utf-8 -*-

'''反射:利用字符串去对象中操作成员'''

'''案例:

根据字符串到模块中执行模块中函数名与字符串一致的函数(以字符串的形式执行函数)

#下面所有操作都是基于内存的,setattr、delattr不会对对象造成影响

hasattr() 判断对象中是否存在成员

getattr() 从对象中查找成员

setattr() 在对象中设置(添加)成员

delattr() 从对象中删除成员

import commons

def run():

s = input("请输入要执行的函数名:")

#if s == 'login':

# commons.login()

#elif s == 'logout':

# commons.logout()

#elif s == 'home':

# commons.home()

#else:

# print('404')

#如果要手动进行判断输入的字符串对应的模块中的函数名,要写很长。要想很简单的就找到函数,可以用反射

if hasattr(commons,s): #判断commons模块中是否存在函数名与字符串s一致的函数,有则返回True

func = getattr(commons,s) #从commons模块中查找函数名与字符串s一致的函数

func() #执行函数

else:

print('404')

if __name__ == '__main__':

run()'''

'''案例2:

以字符串的形式导入模块

__import__() #导入模块,括号内是字符串 =====》也可以使用importlib模块

注意:

如果是导入其他目录下的模块,如:__import__('lib.commons'),默认情况下只会导入lib,而不是导入commons,要想导入完整,

需要添加参数:__import__('lib.commons',fromlist=True),这样就可以导入完整'''

defrun():

s= input('请输入url:') #commons/login形式

m,f = s.split('/')

obj= __import__(m)ifhasattr(obj,f):

func=getattr(obj,f)

func()else:print(404)if __name__ == '__main__':

run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值