getattr 基本概念

getattr提供了一种通过方法名来获取方法的一种途径,python官方的解释如下:

getattr

(

object

,

name

[,

default

]

)

Return the value of the namedattribute of object.namemust be a string. If the string is the name of one of the object’sattributes, the result is the value of that attribute. For example,getattr(x,'foobar') isequivalent to x.foobar.If the named attribute does not exist, defaultis returned if provided, otherwise AttributeErroris raised.

其中需要注意的一点是,

name必须是字符串。

通过下面的例子来说明

getattr的使用。

class GetattrTest(object):

def __init__(self,nm):

self.name = nm

def display(self):

return self.name

gat = GetattrTest('john')

print getattr(gat, 'name','default')

print getattr(gat, 'age','default')

print getattr(gat,'display','default')

print getattr(gat,'display','default')()

输出:

john

default

>

john

如果有name属性则打印出name的值。类中没有age属性,所以打印出default。

getattr 在包装里面的使用

在Python2.2以前,是不允许从标准类型进行派生的。因此可以用包装的方法实现类似的效果。如下:

class WrapMe(object):

def __init__(self, obj):

self.__data = obj

def get(self):

return self.__data

def __repr__(self):

return 'self.__data'

def __str__(self):

return str(self.__data)

def __getattr__(self, attr):

return getattr(self.__data, attr)

wrappedComplex = WrapMe(3.5+4.2j)

print wrappedComplex

print(wrappedComplex.real)

print(wrappedComplex.imag)

print(wrappedComplex.conjugate())

print(wrappedComplex.get())

输出:

(3.5+4.2j)

3.5

4.2

(3.5-4.2j)

(3.5+4.2j)

print(wrappedComplex):调用__repr__()方法。

wrappedComplex.real:当前类中没有real概述性。这块实现的核心方法是,在实例或在字典中搜寻real改属性,如果找不到,就调用__getattr__方法,方法中调用getattr方法,获取实例的real方法,即(3.5+4.2j).real=3.5。

其他的属性和方法调用也类似。

python getattr函数_Python getattr()方法相关推荐

  1. python endswith函数_Python endswith() 方法

    原博文 2017-10-18 13:55 − 描述 endswith() 方法用于判断字符串是否以指定后缀结尾,如果是则返回 True,否则返回 False. 语法 endswith() 方法语法: ...

  2. python log函数_Python log10() 函数

    Python log10() 函数 描述 log10() 方法返回以10为基数的x对数. 语法 以下是 log10() 方法的语法:import math math.log10( x ) 注意:log ...

  3. python array函数_Python bytearray() 函数

    Python bytearray() 函数 描述 bytearray() 方法返回一个新字节数组.这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256. 语法 byt ...

  4. python getattr函数_Python中的getattr()函数详解

    在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么.它知道什么以及它能做什么.自省向程序员提供了极大的灵活性和控制力. 自省(introspection),在计算机编程领域里,是指在运行时来 ...

  5. python getattr函数_python中getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: & ...

  6. python hasattr函数_python学习-type(),isinstance(),dir(),getattr(),setattr(),hasattr()

    isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. isinstance() 会认为子类是一种父类类型,考虑继承关系. 如果要判断两个类型是 ...

  7. python label函数_Python pyplot.clabel方法代码示例

    本文整理汇总了Python中matplotlib.pyplot.clabel方法的典型用法代码示例.如果您正苦于以下问题:Python pyplot.clabel方法的具体用法?Python pypl ...

  8. python中rfind函数_Python rfind()方法

    Python rfind()方法 描述 Python rfind() 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1. 语法 rfind()方法语法: str.rfind(st ...

  9. python series函数_Python给series排序的方法

    Python给series排序的方法 发布时间:2020-08-24 17:09:17 来源:亿速云 阅读:111 作者:小新 小编给大家分享一下Python给series排序的方法,希望大家阅读完这 ...

最新文章

  1. BGA封装芯片手工焊接攻略
  2. 18春《c语言》在线作业3,18春福师《C++语言程序设计》在线作业二【参考答案】...
  3. Android系统性能优化(59)----代码、图片和布局优化
  4. Windows一般都用系统进程来加载内核模块
  5. 【Linux下载安装jdk8】
  6. kindle刷机ttl_“免费” PHICOMM 斐讯 K2路由器TTL刷机全纪录
  7. 如何为您的ADC选择最合适的基准电压源和放大器
  8. 微信小程序扫码功能的使用
  9. Pixelmator for Mac(全能图像编辑软件)
  10. 当你觉得焦虑,烦躁的时候怎么办?
  11. 工作一到五年的Java程序员该如何提升自己?
  12. 计算机关闭自带杀毒,Win10专业版系统中关闭自带杀毒软件操作方法
  13. element ui 控件与布局学习(自用)
  14. 人人商城-数据选择器
  15. 中州韵输入法 linux,linux manjaro安装五笔+拼音输入法(中州韵)
  16. Scrapy爬取P2P新闻入门教程
  17. vue分享到qq,qq空间,微信,微博等
  18. C语言基础分享——内存管理3
  19. 如何修改京东绑定的手机号,看这里就够了,怎样更改京东绑定的手机号
  20. Windows下新建多级文件夹

热门文章

  1. 『科技』2019全球最有前景AI公司TOP100|湾区人工智能
  2. TED 心理学 OCEAN 语录
  3. 除了做幻灯片、画原型,你还能用 Keynote 做一张精美的流程图
  4. 设计模式——迭代器模式
  5. python自带的文档生成工具_Python文档生成工具pydoc使用介绍
  6. pycharm配置python环境
  7. 延缓写入失败计算机硬件,windos延缓写入失败怎么办 windos延缓写入失败处理方法【图文】...
  8. 张 奔:找到你的热爱,并当做信仰
  9. 隔墙有耳:黑客可以“听到”离线计算机的密钥
  10. 定义python函数时如果没有return_python如何定义函数