首先把官方文档搬出来:

doc.png

英文棒的小伙伴们最好是去看下官方文档,毕竟原汁原味的英文表述才最准确。
Python3.6 getattr 官方文档

getattr()函数是Python自省的核心函数,可以把一个要访问的变量或方法,通过字符串的形式传递过去并拿到返回的值。

获取对象引用getattr
getattr用于返回一个对象属性,或者方法

示例代码:

class Demo:def __init__(self):self.name = 'allen'self.age = '18'def method_one(self):print("这是 method_one 方法")return "one"def method_two(self):print("这是 method_two 方法")d = Demo()
# 如果d对象中有属性name则打印self.name的值,否则打印'not find'
print(getattr(d, 'name', 'not found'))# 如果d对象中有属性name则打印self.age的值,否则打印'not find'
print(getattr(d, 'age', 'not found'))# 如果有方法method_one,打印其地址,否则打印default
print(getattr(d, 'method_one', 'default'))# 如果有方法method_one,运行函数并打印返回值,否则,打印default
print(getattr(d, 'method_one', 'default')())# 如果有方法method,运行函数并打印None否则打印default
print(getattr(d, 'method_two', 'default')())

解释一下上图的示例代码:
定义一个Demo类,有两个变量nameage,还有两个方法method_onemethod_two
method_one方法打印一句话并返回one这个字符串;
method_two方法打印一句话没有任何返回值;


print(getattr(d, 'name', 'not found')):
获取d对象的name属性,如果name属性没有,返回not found。
运行结果:allen


print(getattr(d, 'age', 'not found')):
获取d对象的age属性,如果age属性没有,返回not found。
运行结果:not found


print(getattr(d, 'method_one', 'default')):
获取d对象的method_one方法的地址,如果method_one方法没有,返回default。
运行结果:<bound method Demo.method_one of <__main__.Demo object at 0x10cbcb9e8>>


print(print(getattr(d, 'method_one', 'default')()):
获取d对象的method_one方法并运行,且打印返回值。如果method_one方法没有,返回default。
运行结果:
这是 method_one 方法
one


print(getattr(d, 'method_two', 'default')()):
获取d对象的method_two方法并运行,且打印返回值。如果method_two方法没有,返回default。
运行结果:
这是 method_one 方法
None


Python自省函数getattr的用法相关推荐

  1. python getattr用法_python自省函数getattr的用法

    getattr是python里的一个内建函数 getattr()这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以把一个类可能要调用的方法放在配置文件里,在需要的时 ...

  2. python中函数startswith的用法_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

  3. python中的getattr的用法_python - 究竟是什么getattr()以及如何使用它?

    python - 究竟是什么getattr()以及如何使用它? 我正在阅读有关getattr()功能的信息. 问题是我仍然无法掌握它的用法. 我唯一理解getattr()是getattr(li, &q ...

  4. python sort函数时间复杂度_STL用法及其时间复杂度分析

    STL是C++语言中一个非常实用的代码库,叫做标准模板库,通常我们使用这个头文件即可导入STL.本文立足与C++,但是python其实也是大同小异. set set正如其名,表示的是一个集合,其分为两 ...

  5. python raise函数_Python raise用法

    有读者可能会问,编写代码时能否手动抛出一个异常吗?答案是肯定的,Python 允许程序自行引发异常,使用 raise 语句即可. 异常是一种很"主观"的说法,以下雨为例,假设大家约 ...

  6. python getattr_python中getattr()的用法

    1.getattr() 是python 中的一个内置函数,用来获取对象中的属性值 2.getattr(obj,name[,default]) 其中obj为对象名,name是对象中的属性,必须为字符串. ...

  7. python fmod函数_Python fmod()用法及代码示例

    fmod()函数是Python中的标准数学库函数之一,用于计算指定给定参数的模块. 用法: math.fmod( x, y ) 参数: x任何有效数字(正数或负数). y任何有效数字(正数或负数). ...

  8. python中函数startswith的用法_Python中用startswith()函数判断字符串开头的教程

    函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 一.函数说明语法:string.startswith(str, beg=0,end=len(string)) 或strin ...

  9. python min函数的key用法

    min传入key后可以更加全面以及符合自己需求的得到结果.举几个例子说明: 例如1:将下面的列表按年龄数字排序返回元组 list = [('lg',24),('wx',23),('aa',34)] 首 ...

最新文章

  1. 全球大国人工智能实力大比拼与技术发展趋势
  2. Facebook 分享 MySQL 5.6 到 8.0 的迁移经验
  3. day19_MD5加密_Apache DBUtils_监听器 知识回顾
  4. ElementUI中el-radio-group使用v-model绑定是属性为String字符串类型时不回显数据
  5. what should you do if you want to have a high efficiency for communication
  6. 微擎jsapi支付必须传openid怎么解决_面经腾讯微信支付面试记
  7. 每天一道LeetCode-----化简路径
  8. Android内存泄漏总结
  9. Oracle备份解决方案
  10. php和mysql处理树状_分级_无限分类_分层数据的方法_PHP和MySQL处理树状、分级、无限分类、分层数据的方法...
  11. [转载] Python列表操作
  12. 基于jsp+mysql+Spring+hibernate+在线学习交流论坛平台
  13. @RequestParam @RequestBody @PathVariable 等参数绑定
  14. C# IEnumerator与 IEnumerable(2) 托管使用
  15. 常见 HTTP/FTP/WebSocket 错误代码大全 - 转
  16. paip. mysql如何临时 暂时 禁用 关闭 触发器
  17. H5网页漫画小说苹果cms模板源码/支持对接公众号/支持三级分销
  18. 力扣(leetcode)66.加一——c语言新手入门
  19. js 移动端的表情包
  20. oracle 软件证书错误,IE上ORACLE OEM 证书错误 , 导航阻止,无法”继续浏览此网站”...

热门文章

  1. android点滴之PendingIntent的使用
  2. 桥牌笔记L4D17:小心阻塞
  3. [leetcode]Best Time to Buy and Sell Stock III
  4. Linux内核升级Broadcom网卡问题(bnx2)
  5. 心得3--JDBC增删改查模版编写与案例
  6. C#网络编程示例(note)
  7. sql server 2000的数据库还原
  8. 探秘Spring AOP(下)
  9. 软件测试模型-其他模型(W模型|H模型|X模型)
  10. 不懂函数能学c语言吗,不会函数能学C语言吗