Python 官方文档:入门教程 => 点击学习
反射就是根据提供的字符串,匹配对象(类、模块等)里面的方法。达到动态调用的目的。主要有四个成员。getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员语法:getattr(对象,字符串)se
反射就是根据提供的字符串,匹配对象(类、模块等)里面的方法。达到动态调用的目的。
主要有四个成员。getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员
语法:
getattr(对象,字符串)
setattr(对象,字符串,val)
hasattr(对象,字符串)
delattr(对象,字符串)
'''一个简单的例子'''
# 定义一个symbol类,有a,b,c三个方法。
class Symbol(object):
def a():
pass
def b():
pass
def c():
pass
# 输入方法名,执行对应方法。
S = Symbol()
method = input('input method name:').strip()
if hasattr(Symbol,method): # 判断是否存在输入的方法名
getattr(Symbol,method) # 如果存在则运行方法
else:
print("Error!Not Found!")
下面是使用__import__导入模块的例子:
相同目录导入
import commons
__import__('commons')
多层目录导入
from list.text import commons
__import__(' list.text.commons',fromlist=True) #如果不加上fromlist=True,只会导入list目录
而在使用的时候也可以动态输入模块名!
def main():
imp = input('input model name:') # 输入模块名
med = input('input method name:') # 输入方法名
print(imp ,med )
try:
obj = __import__(imp ) #导入该模块
print(obj)
if hasattr(obj,med): #判断有没有这个方法
fuc = getattr(obj,med) #获得这个方法
fuc()
else:
print('Error not found method!')
except:
print('Error not found model!')
if __name__ == '__main__':
main()
官方建议使用标准库importlib
import importlib
lib = importlib.import_moudle("lib\func") #lib\func是模块路径
--结束END--
本文标题: Python基础:反射
本文链接: https://www.lsjlt.com/news/184008.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0