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中的类学习笔记
Sep 23 Python
python使用pycharm环境调用opencv库
Feb 11 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
python实现在线翻译功能
Mar 03 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python 代码运行时间获取方式详解
Sep 18 Python
python文件路径操作方法总结
Dec 21 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
详解Python类和对象内容
Jun 22 Python
Python中Selenium对Cookie的操作方法
Jul 09 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调用Twitter的RSS的实现代码
2010/03/10 PHP
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
smarty简单分页的实现方法
2014/10/27 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python数据正态性检验实现过程
2020/04/18 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
最热门的自我评价
2013/12/30 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
民间个人借款协议书
2014/09/30 职场文书
教师求职信怎么写
2015/03/20 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android