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将文本转换成图片输出的方法
Apr 28 Python
Python中的rfind()方法使用详解
May 19 Python
对Python中9种生成新对象的方法总结
May 23 Python
Python设计模式之原型模式实例详解
Jan 18 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
python ETL工具 pyetl
Jun 07 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
利用python做表格数据处理
Apr 13 Python
Python破解极验滑动验证码详细步骤
May 21 Python
微信小程序调用python模型
Apr 21 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/01/24 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
JavaScript常用本地对象小结
2016/03/28 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
python 统计代码行数简单实例
2017/05/04 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
预备党员党校学习自我评价分享
2013/11/12 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
酒店节能减排方案
2014/05/26 职场文书
小学清明节活动总结
2014/07/04 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
初婚初育证明范本
2014/11/24 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
MySQL七大JOIN的具体使用
2022/02/28 MySQL
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers