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正确重载运算符的方法示例详解
Aug 27 Python
详解python函数传参是传值还是传引用
Jan 16 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
详细分析Python垃圾回收机制
Jul 01 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
Python打包exe时各种异常处理方案总结
May 18 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/09 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
wxPython框架类和面板类的使用实例
2014/09/28 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
django queryset相加和筛选教程
2020/05/18 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
门卫班长岗位职责
2013/12/15 职场文书
中国梦的演讲稿
2014/01/08 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
2014年校长工作总结
2014/12/11 职场文书
法人身份证明书
2015/06/18 职场文书
休学证明范本
2015/06/19 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
MySQL创建管理子分区
2022/04/13 MySQL