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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
13 1
|
12天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
9天前
|
Python
python反射
python反射
|
3天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
4天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
4天前
|
Python
python学习10-函数
python学习10-函数
|
4天前
|
Python
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
|
7天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
12天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)
|
12天前
|
Python
Python函数学习应用案例详解
【4月更文挑战第7天】学习Python函数的应用,包括计算两数之和、判断偶数、计算阶乘、生成斐波那契数列及反转字符串。示例代码展示了函数接收参数和返回结果的功能,如`add(a, b)`求和,`is_even(num)`判断偶数,`factorial(n)`计算阶乘,`fibonacci(n)`生成斐波那契数,以及`reverse_string(s)`反转字符串。
13 1

热门文章

最新文章