一.函数介绍

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

  • 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. ASP.NET + MVC5 入门完整教程二

    原文链接:https://blog.csdn.net/qq_21419015/article/details/80318046 从前端UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分 ...

  2. APP 安全测试

    http://www.cnblogs.com/wetest/p/6694529.html

  3. pip知识点

    pip第三方模块保存在\Lib\site-packages目录 安装第三方模块:\Script目录下->shift+鼠标右点打开powershift窗口 ->pip install 模块名 ...

  4. Java 字符串、数值与16进制相互转化

    字符串.数值与16进制相互转化 首先创建一个工具类: package c; public class DataUtils { /* * 字节数组转16进制字符串 */ public static St ...

  5. unittest的discover方法

    转载:https://www.cnblogs.com/imyalost/p/9048386.html discover()方法 discover(start_dir, pattern ='test * ...

  6. Pycharm调试django项目时发现断点失效

    解决方法: 第一步: 第二步: 点击 Edit Configuration 第三步 : 点击 + 选择python 填写相关参数信息 或者 点击ok  完成配置  重启 IDE 注意   重启IDE ...

  7. Visual Studio 2017:SQLite/SQL Server Compact ToolBox使用

    1.首先是下载安装插件:SQLite/SQL Server Compact Toolbox,也可以从工具-->扩展和更新-->联机-->搜索:SQLite/SQL Server Co ...

  8. 浅谈DAO工厂设计模式(工厂模式的好处)

    随着软件分层设计的流行及广泛的应用,对于DAO的设计模式大家已经不再陌生了,DAO层已经在软件系统的开发中成为必不可少的一层,将后台的数据层和前台的VO进行分离.前段时间也针对于DAO的设计介绍过一个 ...

  9. RNGCryptoServiceProvider 生成订单号

    先生成1~1000的随机数 class Program { // Create a new instance of the RNGCryptoServiceProvider. private stat ...

  10. 直方图histeq

    histeq的原理: [MN]=size(H); [counts,x]=imhist(H);%H是读取的图像,imhist是对图像直方图进行统计,其中count,是每个灰度值得个数,x代表灰度值.一般 ...