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 相关文章推荐
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Python标准库之collections包的使用教程
Apr 27 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
对Python中range()函数和list的比较
Apr 19 Python
python如何爬取个性签名
Jun 19 Python
python datetime中strptime用法详解
Aug 29 Python
python实现简易版学生成绩管理系统
Jun 22 Python
Python requests模块安装及使用教程图解
Jun 30 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
去除python中的字符串空格的简单方法
Dec 22 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP中的替代语法介绍
2015/01/09 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
学生信息管理系统Python面向对象版
2019/01/30 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
演讲稿怎么写
2014/01/07 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
销售目标责任书
2014/07/23 职场文书
大学生党课感想
2015/08/11 职场文书
超市店长竞聘书
2015/09/15 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
关于EntityWrapper的in用法
2022/03/22 Java/Android
Python+Tkinter打造签名设计工具
2022/04/01 Python