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 09 Python
Python contextlib模块使用示例
Feb 18 Python
python 中split 和 strip的实例详解
Jul 12 Python
Python简单生成随机数的方法示例
Mar 31 Python
pandas计数 value_counts()的使用
Jun 24 Python
Python的互斥锁与信号量详解
Sep 12 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
Python常用数据分析模块原理解析
Jul 20 Python
使用Python操作MySQL的小技巧
Sep 10 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
Python3 用什么IDE开发工具比较好
Nov 28 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实现文件上传二法
2006/10/09 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
Javascript实现单例模式
2016/01/24 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
详解vue axios中文文档
2017/09/12 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
Python常用模块介绍
2014/11/21 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python制作简易注册登录系统
2016/12/15 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
python3.4实现邮件发送功能
2018/05/28 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
Python 使用office365邮箱的示例
2020/10/29 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
内业资料员岗位职责
2014/01/04 职场文书
二年级数学教学反思
2014/01/21 职场文书
六个一活动实施方案
2014/03/21 职场文书
优秀教师先进材料
2014/12/16 职场文书
白鹤梁导游词
2015/02/06 职场文书
地震慰问信
2015/02/14 职场文书
小学新课改心得体会
2016/01/22 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python