python 反射(__import__、getattr)

#反射的作用在于模块导入,函数调用时简化代码

以URL为例:

假设URL的形式是A/B

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# 常规
‘‘‘
from backend import login,logout,admin
data = raw_input(‘请输入URL‘)
if data == ‘login/mylogin‘:
login.mylogin()
elif data == ‘logout/mylogout‘:
logout.mylogout()
elif data == ‘admin/index‘:
admin.index()
else:
print ‘error‘
‘‘‘
# 反射
data = raw_input(‘请输入URL‘)
arr = data.split(‘/‘)
namespace = __import__(‘backend.‘ + arr[0]) # import backend.admin
model = getattr(namespace, arr[0]) # model = backend.admin
func = getattr(model, arr[1]) # backend.admin.index()
func()

# import backend.admin
# backend.admin.index()

时间: 2024-12-19 23:56:15

python 反射(__import__、getattr)的相关文章

(转)Python自动化运维之13、异常处理及反射(__import__,getattr,hasattr,setattr)

Python自动化运维之13.异常处理及反射(__import__,getattr,hasattr,setattr) 一.异常处理 python异常: python的运行时错误称作异常 (1)语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译 (2)逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成.计算或者输出结果需要的过程无法执行等 python异常是一个对象,表示错误或意外情况 (1)在python检测到一个错误时,将触发一个异常 python可以通常异常传导机

python反射hasattr getattr setattr delattr

反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)object可以是对象,类,模块,当前Py文件.name是一个给字符串数据类型,可以是变量(属性),函数(方法).如果name在object中存在,则返回Ture,否则返回False. getattr与hasattr语法相同,返回的结果是对应name的值或函数. 反射对象的方法 a.func() re

Python 反射机制详解

本文和大家分享的主要是python反射机制相关内容,一起来看看吧,希望对大家学习python有所帮助. 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质. 一.前言 1 def f1():2   print("f1是这个函数的名字!")3   4 s = "f1"

python 反射 动态导入模块 类attr属性

1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去实现具体的功能 print(hasattr(p, 'age')) # True 是否有属性 判断 print(getattr(p, 'name', '没有找到该参数')) # get属性值 print(getattr(p, 'name1', 'False')) # False setattr(p,

Python反射函数

python里面跟getattr相关的有hasattr,setattr,delattr  ,那么我们通过下面的例子,来详细的说说他们的用法. class Xiaorui: def __init__(self): self.name = 'fengyun' def setName(self,name): self.name = name def getName(self): return self.name def greet(self): print "Hello,i'm %s"%se

Python中的getattr()函数详解:

Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception i

python 反射的内置方法

Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 getattr(object, name[,default]) 获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选. 需要注意的是,如果是返回的对象的方法,返回的是方法

python 知识点:反射 之 getattr()实现以字符串形式导入模块和执行函数

# -*- coding: utf-8 -*- #知识点:反射 #通过字符串的形式去导入模块,这就是反射 #并以字符串的形式执行函数 #先看简单的小粒子 temp = 'mysql' #这个字符串是模块的名字(也就是mysql.py或sqlserver.py,后缀名不用写) func = 'count' #这个字符串是函数的名字(也就是mysql.py/sqlserver.py中的函数count) model = __import__(temp)    #以字符串的形式导入模块 #执行模块中的函

python 反射

1. 反射 实例:伪造web框架中的路由系统 利用反射导入模块 obj = __import__('commons') obj = __import__('lib.' + 'commons',fromlist = True) 导入模块不在当前目录下,需要设置fromlist参数为真, 才能拼接模块路径 利用反射操作对象成员(属性) 通过传入字符串,操作(检查/获取/删除/设置)对象成员(属性) hasattr(对象名,字符串),如果对象中存在名为字符串的属性(成员),返回True,否则返回Fal