博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 知识点:反射 之 getattr()实现以字符串形式导入模块和执行函数
阅读量:6004 次
发布时间:2019-06-20

本文共 1311 字,大约阅读时间需要 4 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
#知识点:反射
#通过字符串的形式去导入模块,这就是反射
#并以字符串的形式执行函数
 
#先看简单的小粒子
temp 
= 
'mysql' 
#这个字符串是模块的名字(也就是mysql.py或sqlserver.py,后缀名不用写)
func 
= 
'count' 
#这个字符串是函数的名字(也就是mysql.py/sqlserver.py中的函数count)
model 
= 
__import__
(temp)    
#以字符串的形式导入模块
 
#执行模块中的函数第一种方法
print 
model.count() 
 
#执行模块中的函数第二种方法
Function 
= 
getattr
(model,func) 
#以字符串的形式执行函数
print 
Function()
 
 
#下面模拟一个数据库连接的小粒子
#准备以下两个文件
 
'''
mysql.py文件模拟连接mysql数据库,连接正常返回1
# -*- coding: utf-8 -*-
def count():
    
return 1
 
sqlserver.py文件模拟连接sqlserver数据库,连接正常返回2
# -*- coding: utf-8 -*-
def count():
    
return 2
 
'''
#注意:mysql.py和sqlserver.py两个文件自行定义即可,这里近用于模拟作用
#并非是实际连接数据库的语句
 
def 
db_count(db_name):
    
temp 
= 
db_name 
#模块的名字(也就是mysql或sqlserver)
    
func 
= 
'count' 
#函数的名字(也就是mysql.py/sqlserver.py中的函数count)
    
model 
= 
__import__
(temp)
    
Function 
= 
getattr
(model,func) 
#以字符串的形式执行函数
    
return 
Function()
 
#目前模拟的是默认连接sqlserver数据库
status 
= 
db_count(
'sqlserver'
)
 
#检查连接sqlserver的状态(正常状态为:2),如果不能连接,则切换连接到mysql
if 
status !
= 
2
:
    
status 
= 
db_count(
'mysql'
)
    
print 
'已切换为mysql,连接ID:%d' 
% 
status
else
:
    
print 
'sqlserver连接正常,连接ID:%d' 
% 
status
 
#测试动作:
#1、可将sqlserver.py中的count返回值修改成3

本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1870771

转载地址:http://ehpmx.baihongyu.com/

你可能感兴趣的文章
禁止Mysql默认端口访问Internet - MySQL - IT技术网
查看>>
基于用户投票的排名算法(二):Reddit
查看>>
css3中变形与动画(一)
查看>>
[XMove-自主设计的体感解决方案] 系统综述
查看>>
【LINUX学习】磁盘分割之建立primary和logical 分区
查看>>
变更 Linux、Ubuntu 时区、时间
查看>>
[共通]手机端网页开发问题及解决方法整理
查看>>
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
查看>>
[译] ES2018(ES9)的新特性
查看>>
C# Selenium 破解腾讯滑动验证
查看>>
bom与dom的区别
查看>>
Matlab2012a下配置LibSVM—3.18
查看>>
Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
查看>>
修复CefSharp浏览器组件中文输入Bug
查看>>
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
iOS开发拓展篇—UIDynamic(简单介绍)
查看>>
Linux pipe函数
查看>>