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 ...
随机推荐
- Tomcat无法成功启动——双击startup.bat闪退
使用的Tomcat是免安装版本的.因为在启动tomcat是需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致了tomcat的闪退. 解决办法: 1:在已解压的tomcat的bin文件 ...
- Django_Setings
""" Django settings for untitled1 project. Generated by 'django-admin startproject' u ...
- 【C语言】输入10个人的成绩,求平均值
#include<stdio.h> int main() { int i; ,score[]; printf("请输入10个数字:\n"); ; i < ; i+ ...
- linux 系统如何复制文件到指定目录
首先使用命令函数“cp” 即copy的缩写, 一般模式: cp filename 路径. 如file1在A目录下,我们想把file1复制到B目录下 命令为 cp file1 /home/B ...
- 机器学习(ML)十六之目标检测基础
目标检测和边界框 在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别.然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置.在 ...
- c#修改项目名称
1.修改解决方案名称 右键,重命名 2.修改项目名称 右键,重命名 3.修改程序集名称和默认命名空间 项目,属性 4.替换解决方案中的名称 编辑,替换,替换范围默认整个解决方案 5.用记事本打开.sl ...
- AS报错:Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency 'com.and
build->Rebuid-project 寻找错误根源: 报错里可以发现: Resolved versions for app (26.1.0) and test app (27.1.1) d ...
- 吴裕雄 python 机器学习——KNN回归KNeighborsRegressor模型
import numpy as np import matplotlib.pyplot as plt from sklearn import neighbors, datasets from skle ...
- GBK与Unicode的转换
一.GBK转换到Unicode编码 std::string Gbk2Unicode(std::string &strValue) { std::string strReturn; unsign ...
- Centos610-FastDFS系列篇
最近有使用到FastDFS,考虑到实际在Linux上面配置频率比较低(属于一次性配置),所以本文开始记录相关安装过程,以方便后续使用. 1.单机版安装配置 FastDFS单机模式安装配置 2.集群模式 ...