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中的Classes和Metaclasses详解
Apr 02 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
pycharm设置注释颜色的方法
May 23 Python
python下载微信公众号相关文章
Feb 26 Python
python实现AES加密解密
Mar 28 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python中sympy库求常微分方程的用法
Apr 28 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
如何用python写个模板引擎
Jan 14 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
手机促销活动方案
2014/02/05 职场文书
大学生实习推荐信
2015/03/27 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python