getattr() 函数用于返回一个对象属性值。

def getattr(object, name, default=None): # known special case of getattr"""getattr(object, name[, default]) -> valueGet a named attribute from an object; getattr(x, 'y') is equivalent to x.y.When a default argument is given, it is returned when the attribute doesn'texist; without it, an exception is raised in that case."""pass

getattr()语法结构:

getattr(object, name[, default])
  • object -- 对象。
  • name -- 字符串,对象属性。
  • default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

返回值:返回对象属性值。

示例代码1:

class Test(object):x = 1a = Test()
print(getattr(a, 'x'))  # 获取属性 x 值
print(getattr(a, 'y', 'None'))  # 获取属性 y 值不存在,但设置了默认值
# print(getattr(a, 'y'))    # AttributeError: 'Test' object has no attribute 'y'print(a.x)  # 效果等同于上面

运行结果:

示例代码2:

class Demo(object):def __init__(self):self.name = '张三'self.age = '25'def first(self):print("这是 first 方法")return "one"def second(self):print("这是 second 方法")a = Demo()
# 如果a对象中有属性name则打印self.name的值,否则打印'non-existent'
print(getattr(a, 'name', 'non-existent'))
print("*" * 100)# 如果a对象中有属性age则打印self.age的值,否则打印'non-existent'
print(getattr(a, 'age', 'non-existent'))
print("*" * 100)# 如果有方法first,打印其地址,否则打印default
print(getattr(a, 'first', 'default'))
print("*" * 100)# 如果有方法first,运行函数并打印返回值,否则,打印default
print(getattr(a, 'first', 'default')())
print("*" * 100)# 如果有方法second,运行函数并打印None否则打印default
print(getattr(a, 'second', 'default')())

运行结果:

示例代码3:   【对对象中的方法传参使用】

class Demo(object):def run(self, name, age):return f"My name is {name}, age is {age}!"aa = getattr(Demo, 'run')
print(aa)bb = getattr(Demo(), 'run')
print(bb)cc = getattr(Demo, 'run')(1, "dgw", "26")
print(cc)dd = getattr(Demo(), 'run')("dgw", "26")
print(dd)

运行结果:

示例代码4:  【requests方法使用getattr()】

import requestsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}# 最后有没有问号结果都一样
url = 'https://www.baidu.com/s?'# 请求参数是一个字典 即wd=python
kw = {'wd': 'python'}# 方法一:
# 带上请求参数发起请求,获取响应
response = requests.get(url, headers=headers, params=kw)print(response.status_code)
print(response.url)# 方法二:使用getattr()
response2 = getattr(requests, 'get')(url, headers=headers, params=kw)
print(response2.status_code)
print(response2.url)

运行结果:

python中getattr()函数用法详解相关推荐

  1. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  2. python中repr()函数用法详解

    在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str() 或者 repr() . str()和repr()区别: 函数str( )将其转化成为适于人阅读的前端样式文本 ...

  3. python中namedtuple函数用法详解

    源码解释: def namedtuple(typename, field_names, *, rename=False, defaults=None, module=None):"" ...

  4. python中isinstance()函数用法详解

    isinstance()用来判断一个对象是否是一个已知的类型,isinstance()函数的语法如下: isinstance(object,classtype) object -- 实例对象. cla ...

  5. python中hasattr()函数用法详解

    hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法. 无论是属性名还是方法名,都在 hasattr() 函数的匹配范围内. 通过该函数判断实例对象是否包含该名称的属性或方法,但 ...

  6. python中reduce()函数用法详解

    reduce()源码: def reduce(function, sequence, initial=None): # real signature unknown; restored from __ ...

  7. python中any()函数用法详解

    any()源码解析: def any(*args, **kwargs): # real signature unknown"""Return True if bool(x ...

  8. Python中strip()函数用法详解

    strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. 移除首尾存在于strip('str_list') str_list中任何的字符. 如图所示,只要字符串中收尾存在着1 ...

  9. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

最新文章

  1. MyEclipse设置默认的文档注释和背景色设置
  2. WebClient UI和Tomcat的启动器
  3. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板
  4. 启动指定参数_SpringBoot的三种启动方式
  5. Cocos2d-x跨AndroidiOS平台开发入门
  6. 数据结构 —— 数据结构相关
  7. hdu1251(trie树)
  8. 申请一个公网ip多少钱_申请1个条形码多少钱?小作坊如何申请条形码?
  9. 基于高频18000-3M3技术的RFID智能书架方案
  10. 浏览器架构的误区和瘦客户端应用
  11. *python中的字符串
  12. 华为路由器RIP经典案例
  13. java catch块_用Java编写带有清除操作的catch块
  14. 炼油厂将abc三种原油 matlab求解,某工厂制造三种产品A、B和C需要两种资源(劳动力和原材料),目标是要确定总利润最大的最优生产计划。列出的线性...
  15. 微信奇销36计 赖老师
  16. tinymce自动实现斑马纹表格
  17. 自制和烧录单片机 unicode 字库芯片 - 创建字库
  18. 求伯君的问题还是记者的问题?
  19. 欢迎使用CSDN-markdown编辑器 新人报道
  20. JProfiler 9.1注册码

热门文章

  1. PMP备考错题集-模拟三
  2. 经济基础知识(初级)【15】
  3. 通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示
  4. jQuery判断元素是否显示与隐藏
  5. matlab中diag函数blkdiag函数的用法
  6. Minecraft 1.12.2模组开发(一) 配置ForgeMDK环境
  7. 机器学习应该了解的十大算法
  8. UnityUI超简单实现敌方血条近大远小的效果
  9. 2018 金华市中小学学生计算机,2018年金华市中小学生校园足球秋季联赛圆满落幕...
  10. 网络协议上课笔记(三) 路由、重要概念、NAT