python setattr()、getattr()、hasattr() 函数用法介绍
一.函数介绍
在动态检查对象是否包含某些属性(包括方法〉相关的函数有如下几个:
- 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() 函数用法介绍的更多相关文章
- python之setattr,getattr,hasattr
可以使用setattr(), getattr(), hasattr()动态对实例进行操作. 相当于Java中的反射机制, 或者更确切地, 像JavaScript中属性操作. 具体属性: __dict_ ...
- python骚操作---Print函数用法
---恢复内容开始--- python骚操作---Print函数用法 在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 3.x 中是个内置函数,并且拥有更丰富的功能. 参数 ...
- python常用内置函数用法精要
用一个表格大致总结一下所有的内置函数用法,如下: 函数 功能简要说明 abs(x) 返回数字x的绝对值或复数x的模 all(iterable) 如果对于可迭代对象中所有元素x都等价于True,则返回T ...
- python setattr(),getattr()函数
setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为value,属性name可以是已存在属性也可以是新属性. get ...
- Python中内置函数的介绍
内置函数的功能介绍 常用内置函数如下: 1.abs() 绝对值 格式:abs(x) 例如:print(abs(-18)) >>> 18 返回值:number #该函数主要用于数值类的 ...
- Python lambda(匿名函数)介绍【转】
引用: http://www.cnblogs.com/evening/archive/2012/03/29/2423554.html 在学习python的过程中,lambda的语法时常会使人感到困惑, ...
- python numpy的transpose函数用法
#MXNET的N*C*H*W在numpy打印时比较直观#mxnet卷积层# 输入数据格式是:batch * inchannel * height * width# 输出数据格式是:batch * ou ...
- PHP curl_setopt函数用法介绍上篇
最近,学习与实践了php中curl的知识点.在此做个初步的总结: 先看看对于它的基本介绍: curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用 ...
- $.extend(x,y); 函数用法介绍。
第一篇资料: 转自: https://www.cnblogs.com/yuqingfamily/p/5813650.html 语法:jQuery.extend( [deep ], target, o ...
随机推荐
- P1582 倒水(贪心 + lowbbit)
https://www.luogu.com.cn/problem/P1582 #include <bits/stdc++.h> using namespace std; #define i ...
- 题解【洛谷P2002】消息扩散
题面 题解 \(Tarjan\)裸题. \(Tarjan\)缩点后统计入度为\(0\)的强连通分量个数,输出即可. 代码 #include <iostream> #include < ...
- xshell配置---文件上传命令rz和下载命令sz
1.下载安装包 方法一:手动下载安装 1)下载安装包:lrzsz-0.12.20.tar.gz 官网下载地址:http://www.ohse.de/uwe/releases/lrzsz-0.12.20 ...
- set_set_switching_activity
set_switching_activity -static 0.2 -toggle_rate 20 -period 1000 [all_inputs] 这时,翻转率设置的节点是输入, ...
- noobSTL-1-配置器-0
noobSTL-1-配置器-0 0.前言 STL的配置器(allocator),也叫内存分配器,负责空间配置与管理,简单地说,就是负责管理内存的. 从实现的角度来看,配置器是一个实现了动态空间配置.空 ...
- python中pip问题
1.在cmd中运行pip命令显示‘pip命令显示不是内部或外部命令,也不是可运行的程序或批处理文件’的问题 先看python的安装目录下Script文件夹中pip3.exe有没有缺失 如果没有在cmd ...
- 简单docker示例
创建spring boot工程 工程目录 Controller.java 类说明 主要是接收界面请求,直接返回传入的参数 在启动工程,查看工程运行效果 右键SampleApplication.java ...
- opencv:图像梯度
常见的图像梯度算子: 一阶导数算子: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; ...
- PHP通过thrift2访问HBASE
前一段时间需要在网页上显示HBASE查询的结果,考虑用PHP来实现,在网上搜了一下,普遍都是用thrift作为接口来实现的. 参考博文: http://www.cnblogs.com/scotom ...
- redis 基础操作教程
1.linux 安装redis : Linux 下安装 下载地址:http://redis.io/download,下载最新稳定版本. 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wg ...