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 输出一个两行字符的变量
Feb 05 Python
Python实现备份文件实例
Sep 16 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
Python字符串格式化的方法(两种)
Sep 19 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
Django 全局的static和templates的使用详解
Jul 19 Python
Django Celery异步任务队列的实现
Jul 24 Python
基于python实现学生信息管理系统
Nov 22 Python
结束运行python的方法
Jun 16 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
Python中requests做接口测试的方法
May 30 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
jquery 实现返回顶部功能
2014/11/17 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
javascript学习之json入门
2016/12/22 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
django rest framework使用django-filter用法
2020/07/15 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
企业门卫岗位职责
2013/12/12 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
党员群众路线承诺书
2014/05/20 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
2014年统计工作总结
2014/11/21 职场文书
先进教师个人总结
2015/02/11 职场文书
党小组考察意见
2015/06/02 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
vue基于Teleport实现Modal组件
2021/05/31 Vue.js