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回调函数用法实例分析
May 09 Python
Python基于DES算法加密解密实例
Jun 03 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
Python利用递归实现文件的复制方法
Oct 27 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
Python比较配置文件的方法实例详解
Jun 06 Python
如何使用python切换hosts文件
Apr 29 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python数据清洗工具之Numpy的基本操作
Apr 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
php 远程图片保存到本地的函数类
2008/12/08 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
学习python的几条建议分享
2013/02/10 Python
python实现超简单端口转发的方法
2015/03/13 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python中requests和https使用简单示例
2018/01/18 Python
Python中的默认参数实例分析
2018/01/29 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
北承题目(C++)
2012/05/16 面试题
连锁酒店店长职责范本
2014/02/13 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
负责培养人意见
2015/06/05 职场文书