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 BeautifulSoup使用方法详解
Nov 21 Python
python支持断点续传的多线程下载示例
Jan 16 Python
详解Python验证码识别
Jan 25 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
Python实现基于POS算法的区块链
Aug 07 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
Python如何定义接口和抽象类
Jul 28 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
Django项目如何正确配置日志(logging)
Apr 29 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实现把数字ID转字母ID
2013/08/12 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
学习YUI.Ext基础第一天
2007/03/10 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
使用console进行性能测试
2015/04/27 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
Django学习之文件上传与下载
2019/10/06 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
社区优秀志愿者材料
2014/02/02 职场文书
2014年护理部工作总结
2014/11/14 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书