Python通过getattr函数获取对象的属性值


Posted in Python onOctober 16, 2020

英文文档:

getattr(object, name[, default])
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object's attributes, the result is the value of that attribute. For example, getattr(x, 'foobar') is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.

获取对象的属性值

说明:

1. 函数功能是从对象object中获取名称为name的属性,等效与调用object.name。

#定义类Student
>>> class Student:
  def __init__(self,name):
    self.name = name

    
>>> s = Stduent('Aim')
>>> getattr(s,'name') #等效于调用s.name
'Aim'
>>> s.name
'Aim'

2. 函数第三个参数default为可选参数,如果object中含义name属性,则返回name属性的值,如果没有name属性,则返回default值,如果default未传入值,则报错。

#定义类Student
>>> class Student:
  def __init__(self,name):
    self.name = name

>>> getattr(s,'name') #存在属性name
'Aim'

>>> getattr(s,'age',6) #不存在属性age,但提供了默认值,返回默认值
6

>>> getattr(s,'age') #不存在属性age,未提供默认值,调用报错
Traceback (most recent call last):
 File "<pyshell#17>", line 1, in <module>
  getattr(s,'age')
AttributeError: 'Stduent' object has no attribute 'age'

与__getattr__的区别:

__getattr__是类的内置方法,当找不到某个属性时会调用该方法;找到就不会调用.

getattr与类无关.

一个例子:作为data的代理类,可以以这种方式来使用data的属性.

class DataProxy(...):
  def __getattr__(self, item):
    return getattr(self.data, item)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python列表切片用法示例
Apr 19 Python
详解Python之unittest单元测试代码
Jan 24 Python
Python实现ping指定IP的示例
Jun 04 Python
python3实现随机数
Jun 25 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
Python如何将函数值赋给变量
Apr 28 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
Python实现视频中添加音频工具详解
Dec 06 Python
微信小程序调用python模型
Apr 21 Python
pandas处理csv文件的方法步骤
Oct 16 #Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 #Python
Python使用内置函数setattr设置对象的属性值
Oct 16 #Python
python pymysql库的常用操作
Oct 16 #Python
Python基于callable函数检测对象是否可被调用
Oct 16 #Python
python collections模块的使用
Oct 16 #Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 #Python
You might like
初探PHP5
2006/10/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
php文件包含的几种方式总结
2019/09/19 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
一个超级简单的python web程序
2014/09/11 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
某公司的.net工程师面试题笔试题
2013/11/22 面试题
Python中如何定义一个函数
2016/09/06 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
行政助理的职责
2013/11/14 职场文书
会计应届生的自荐信
2013/12/13 职场文书
实习评语
2013/12/16 职场文书
学生宿舍管理制度
2014/01/30 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
党校党性分析材料
2014/12/19 职场文书
借款民事起诉状范文
2015/05/19 职场文书
2015国庆节感想
2015/08/04 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS