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的pdb调试命令的命令整理及实例
Jul 12 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
Python使用functools实现注解同步方法
Feb 06 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
python调用接口的4种方式代码实例
Nov 19 Python
Python拼接字符串的7种方式详解
Mar 19 Python
Python探索生命起源 matplotlib细胞自动机动画演示
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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
PHP children()函数讲解
2019/02/03 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
Javascript 二维数组
2009/11/26 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
详解Vue.js中.native修饰符
2018/04/24 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python遍历numpy数组的实例
2018/04/04 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
校园活动策划方案
2014/06/13 职场文书
责任书格式
2015/01/29 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
英语通知范文
2015/04/22 职场文书
跳高加油稿
2015/07/21 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
Python实战之疫苗研发情况可视化
2021/05/18 Python
Python+tkinter实现高清图片保存
2022/03/13 Python