Python getattr()函数使用方法代码实例


Posted in Python onAugust 10, 2020

getatter()通过方法名字符串调用方法,这个方法最主要的作用就是实现反射机制,也就是说可以通过字符串获取方法实例,这样就可以把一个类可能要调用的方法放到配置文件里,需要的时候进行动态加载。

1: 可以从类中获取属性和函数

新建test.py文件,代码如下:

# encoding:utf-8
import sys
 
class GetText():
  def __init__(self):
    pass
 
  @staticmethod
  def A():
    print("this is a staticmethod function")
 
  def B(self):
    print("this is a func")
  c = "cc desc"
 
if __name__ == '__main__':
  print(sys.modules[__name__]) # <module '__main__' from 'D:/脚本项目/lianxi/clazz/test.py'>
  print(GetText)  # <class '__main__.GetText'>
  # 获取函数
  print(getattr(GetText, "A"))  # <function GetText.A at 0x00000283C2B75798>
  # 获取函数返回值
  getattr(GetText, "A")()  # this is a staticmethod function
  getattr(GetText(), "A")()  # this is a staticmethod function
 
  print(getattr(GetText, "B"))  # <function GetText.B at 0x000001371BF55798>
  # 非静态方法不可用
  # getattr(GetText, "B")()
  getattr(GetText(), "B")()   # this is a func
  print(getattr(GetText, "c")) # cc desc
  print(getattr(GetText(), "c"))  # cc desc

2:从模块中获取类(通过类名字符串得到类对象)

新建test1.py,代码如下:

#encoding:utf-8
import sys
import test
print(sys.modules[__name__])
 
# 从模块中获取类对象
class_name = getattr(test, "GetText")
print(class_name)  # <class 'test.GetText'>
 
# 调用类的属性和函数
print(getattr(class_name, "A"))  # <function GetText.A at 0x000001D637365678>
# 获取函数返回值
getattr(class_name, "A")()  # this is a staticmethod function
getattr(class_name(), "A")()  # this is a staticmethod function
 
print(getattr(class_name(), "B"))  # <bound method GetText.B of <test.GetText object at 0x0000022D3B9EE348>>
# getattr(class_name, "B")()  非静态方法不可用
getattr(class_name(), "B")()  # this is a func
 
# 获取属性值
print(getattr(class_name, "c"))  # cc desc
print(getattr(class_name(), "c"))  # cc desc

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现巡检系统(solaris)示例
Apr 02 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Django web框架使用url path name详解
Apr 29 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
opencv实现图像几何变换
Mar 24 Python
numpy数据类型dtype转换实现
Apr 24 Python
Python matplotlib模块及柱状图用法解析
Aug 10 #Python
Python如何操作docker redis过程解析
Aug 10 #Python
基于Python实现下载网易音乐代码实例
Aug 10 #Python
Python grequests模块使用场景及代码实例
Aug 10 #Python
基于Python pyecharts实现多种图例代码解析
Aug 10 #Python
Python Celery异步任务队列使用方法解析
Aug 10 #Python
使用Python将语音转换为文本的方法
Aug 10 #Python
You might like
php自定义加密与解密程序实例
2014/12/31 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
js实现随机点名小功能
2017/08/17 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
Python函数嵌套实例
2014/09/23 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python中logging日志库实例详解
2020/02/19 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
编辑求职信样本
2013/12/16 职场文书
城市创卫标语
2014/06/17 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
公司会议开幕词
2016/03/03 职场文书
详解Redis主从复制实践
2021/05/19 Redis
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers