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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
云数据库 RDS MySQL,集群系列 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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
19 5
|
17天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
20天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
62 5
|
20天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
19天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
15 0
|
19天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
15 0
|
19天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
16 0
|
Python
说说Python中的反射是什么?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!
102 0
说说Python中的反射是什么?
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
5天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!