一.函数介绍

在动态检查对象是否包含某些属性(包括方法〉相关的函数有如下几个:

  • hasattr(object,name):检查 object 对象是否包含名为 name 的属性或方法。
  • getattr(object,name,default=None):获取 object 对象中名为 name 的属性的属性值(属性和函数都叫做属性)。
  • setattr(object,name,value):将 object 对象的 name 属性设为 value。
 class Learn_Python:
def __init__(self, detail, view_times):
self.detail = detail
self.view_times = view_times def start(self):
print("尝试学习%s" % self.detail) c = Learn_Python('python自动化', 20)

二.hasatter()函数使用

1)判断类中存在的属性和方法

 # 判断是否包含指定的属性或方法
print(hasattr(c, 'detail')) # True
print(hasattr(c, 'view_times')) # True
print(hasattr(c, 'start')) # True

2)判断类中不存在的属性和方法

 # 判断是否包含指定的属性或方法
print(hasattr(c, 'detail_1')) # False
print(hasattr(c, 'view_times_1')) # False
print(hasattr(c, 'start_1')) # False

二.getattr()函数使用

1)获取类中存在的属性

 # 获取指定属性的属性值和方法
print(getattr(c, 'detail')) # 'python自动化'
print(getattr(c, 'view_times')) #
print(getattr(c, 'start')) # <bound method Learn_Python.start of <__main__.Learn_Python object at 0x0000020EC839E3C8>>

2)获取类中不存在的属性

结果直接报错

3)获取类中不存在的属性,并且给它默认值(这个默认值可以自己定义)

 #获取不存在的属性,并且给默认值
print(getattr(c, 'start', '默认值')) #<bound method Learn_Python.start of <__main__.Learn_Python object at 0x00000163F6D08B38>>

二.hasattr()函数使用

1)指定属性设置为新属性值

 #为指定属性设置属性值
setattr(c, 'detail', 'python接口自动化')
setattr(c, 'view_times', 32)
#输出重新设置后的属性值
print(c.detail) #python接口自动化
print(c.view_times) #

2)为对象添加不存在的属性值

 #为对象添加不存在的属性值
setattr(c, 'detail_1', 'python接口自动化') #不存在的detail_1属性值
#输出重新设置后的属性值
print(c.detail_1) #python接口自动化

3)指定方法设置为新的方法

 def end ():
print('随便的方法')
# 将c的start方法设为end函数
setattr(c, 'start', end)
c.start() #随便的方法

4)为对象添加不存在的方法

 def end ():
print('随便的方法')
# 为对象添加不存在的end函数
setattr(c, "start_1",end) #不存在的方法start_1
c.start_1() #随便的方法

5)指定方法设置为属性(不能将方法变为属性值)

 def end ():
print('随便的方法')
# 将c的start方法设为end函数
setattr(c, 'start', "end")
c.start() #TypeError: 'str' object is not callable

python setattr()、getattr()、hasattr() 函数用法介绍的更多相关文章

  1. python之setattr,getattr,hasattr

    可以使用setattr(), getattr(), hasattr()动态对实例进行操作. 相当于Java中的反射机制, 或者更确切地, 像JavaScript中属性操作. 具体属性: __dict_ ...

  2. python骚操作---Print函数用法

    ---恢复内容开始--- python骚操作---Print函数用法 在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 3.x 中是个内置函数,并且拥有更丰富的功能. 参数 ...

  3. python常用内置函数用法精要

    用一个表格大致总结一下所有的内置函数用法,如下: 函数 功能简要说明 abs(x) 返回数字x的绝对值或复数x的模 all(iterable) 如果对于可迭代对象中所有元素x都等价于True,则返回T ...

  4. python setattr(),getattr()函数

    setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为value,属性name可以是已存在属性也可以是新属性. get ...

  5. Python中内置函数的介绍

    内置函数的功能介绍 常用内置函数如下: 1.abs() 绝对值 格式:abs(x) 例如:print(abs(-18)) >>> 18 返回值:number #该函数主要用于数值类的 ...

  6. Python lambda(匿名函数)介绍【转】

    引用: http://www.cnblogs.com/evening/archive/2012/03/29/2423554.html 在学习python的过程中,lambda的语法时常会使人感到困惑, ...

  7. python numpy的transpose函数用法

    #MXNET的N*C*H*W在numpy打印时比较直观#mxnet卷积层# 输入数据格式是:batch * inchannel * height * width# 输出数据格式是:batch * ou ...

  8. PHP curl_setopt函数用法介绍上篇

    最近,学习与实践了php中curl的知识点.在此做个初步的总结: 先看看对于它的基本介绍: curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用 ...

  9. $.extend(x,y); 函数用法介绍。

    第一篇资料:  转自: https://www.cnblogs.com/yuqingfamily/p/5813650.html 语法:jQuery.extend( [deep ], target, o ...

随机推荐

  1. Dockers的安装

    添加yum源 #下载163的yum源到本地 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7 ...

  2. python call perl

    import subprocess subprocess.call("csv_gen.pl -by overall", shell=True)

  3. 题解【BZOJ4145】「AMPPZ2014」The Prices

    题目描述 你要购买 \(m\) 种物品各一件,一共有 \(n\) 家商店,你到第 \(i\) 家商店的路费为 \(d[i]\),在第 \(i\) 家商店购买第 \(j\) 种物品的费用为 \(c[i] ...

  4. DuPan不限速教程

    准备: 1.一个百度网盘链接 2.一个可以切换UA的浏览器, 手机版:via,极速浏览器,Kiwi浏览器(推荐)电脑版:未知 3.你的手和脑子

  5. 基于SILVACO ATLAS的a-IGZO薄膜晶体管二维器件仿真(01)

    最近因为肺炎的缘故,宅在家里不能出门,就翻了下一些资料,刚好研究方向是这个,就简单研究了下.参考资料主要如下: 1.<半导体工艺和器件仿真软件Silvaco TCAD实用教程> 唐龙谷 2 ...

  6. OSS链接出现 connection pool shutdown错误修改

    在类中创建了OSSClient对象 ,方法共用此实例对象,在前端很短的时间内连续提交,造成异常错误. 解决方法时将OSSClient对象在方法中创建

  7. 面试题17.打印从1到最大的n位数

    void print_n_number(int n){ if(n<=0){ cout<<"fuckyou"; return; } string s="1 ...

  8. buuctf misc 刷题记录

    1.金三胖 将gif分离出来. 2.N种方法解决 一个exe文件,果然打不开,在kali里分析一下:file KEY.exe,ascii text,先txt再说,base64 图片. 3.大白 crc ...

  9. imread函数+cvtColor()函数

    加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCH ...

  10. 第二十六篇 玩转数据结构——二分搜索树(Binary Search Tree)

          1.. 二叉树 跟链表一样,二叉树也是一种动态数据结构,即,不需要在创建时指定大小. 跟链表不同的是,二叉树中的每个节点,除了要存放元素e,它还有两个指向其它节点的引用,分别用Node l ...