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使用xlrd读取Excel格式文件的方法
Mar 10 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
windows10系统中安装python3.x+scrapy教程
Nov 08 Python
详解django中自定义标签和过滤器
Jul 03 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
Python转换时间的图文方法
Jul 01 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
解决python flask中config配置管理的问题
Jul 26 Python
基于python实现可视化生成二维码工具
Jul 08 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
基于Python实现天天酷跑功能
Jan 06 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&amp;mysql(六)
2006/10/09 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
vue项目中引入Sass实例方法
2019/08/27 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python中uuid模块实例浅析
2020/12/29 Python
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
德育标兵事迹材料
2014/08/24 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
护理专业自荐信范文
2015/03/06 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
python 如何获取页面所有a标签下href的值
2021/05/06 Python
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL