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使用pymysql实现操作mysql
Sep 13 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
浅析Python函数式编程
Oct 06 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
Python3 JSON编码解码方法详解
Sep 06 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
Python 阶乘详解
Oct 05 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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
解析csv数据导入mysql的方法
2013/07/01 PHP
php源码的安装方法和实例
2019/09/26 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
Python 流程控制实例代码
2009/09/25 Python
python如何修改装饰器中参数
2018/03/20 Python
python format 格式化输出方法
2018/07/16 Python
python将数组n等分的实例
2019/12/02 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Weblogic的布署方式
2013/08/23 面试题
绩效专员岗位职责
2013/12/02 职场文书
《学棋》教后反思
2014/04/14 职场文书
环保口号大全
2014/06/12 职场文书
入股协议书范本
2014/11/01 职场文书
2015年党建工作总结
2015/03/30 职场文书
保险内勤岗位职责
2015/04/13 职场文书
学校德育工作总结2015
2015/05/11 职场文书