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 当前全局变量和入口参数的所有属性
Jul 01 Python
基于Python的关键字监控及告警
Jul 06 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
Python unittest单元测试框架总结
Sep 08 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python绘制股票移动均线的实例
Aug 24 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
浅谈Python中的函数(def)及参数传递操作
May 25 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 Python
讲解Python实例练习逆序输出字符串
May 06 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
PHP 编程安全性小结
2010/01/08 PHP
php include和require的区别深入解析
2013/06/17 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
总结对比php中的多种序列化
2016/08/28 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
打架检讨书100字
2014/01/08 职场文书
档案接收函范文
2014/01/10 职场文书
倡议书范文格式
2014/05/12 职场文书
服务员岗位职责
2015/02/03 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
工程部岗位职责范本
2015/04/11 职场文书
责任书范本大全
2015/05/11 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python