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 中整型对象存储的位置
May 16 Python
Python Flask基础教程示例代码
Feb 07 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
python检测服务器端口代码实例
Aug 31 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python time()的实例用法
Nov 03 Python
python 简单的调用有道翻译
Nov 25 Python
python 如何获取页面所有a标签下href的值
May 06 Python
Python如何识别银行卡卡号?
Jun 10 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的安全
2006/10/09 PHP
PHP关联链接常用代码
2012/11/05 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
Smarty3配置及入门语法
2017/02/22 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python中的下划线详解
2015/06/24 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
Python执行时间的几种计算方法
2020/07/31 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
一套Java笔试题
2016/08/20 面试题
金融专业应届生求职信
2013/11/02 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
日化店促销方案
2014/03/26 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android