详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数


Posted in Python onApril 18, 2018

hasattr()函数

hasattr()函数用于判断是否包含对应的属性

语法:

hasattr(object,name)

参数:

object--对象

name--字符串,属性名

返回值:

如果对象有该属性返回True,否则返回False

示例:

class People:
  country='China'
  def __init__(self,name):
    self.name=name
  def people_info(self):
    print('%s is xxx' %(self.name))
obj=People('aaa')
print(hasattr(People,'country'))
#返回值:True
print('country' in People.__dict__)
#返回值:True
print(hasattr(obj,'people_info'))
#返回值:True
print(People.__dict__)
##{'__module__': '__main__', 'country': 'China', '__init__': <function People.__init__ at 0x1006d5620>, 'people_info': <function People.people_info at 0x10205d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None}

getattr()函数

描述:

getattr()函数用于返回一个对象属性值

语法:

getattr(object,name,default)

参数:

object--对象

name--字符串,对象属性

default--默认返回值,如果不提供该参数,在没有对于属性时,将触发AttributeError。

返回值:

返回对象属性值

class People:
  country='China'
  def __init__(self,name):
    self.name=name

  def people_info(self):
    print('%s is xxx' %(self.name))
obj=getattr(People,'country')
print(obj)
#返回值China
#obj=getattr(People,'countryaaaaaa')
#print(obj)
#报错
# File "/getattr()函数.py", line 32, in <module>
#   obj=getattr(People,'countryaaaaaa')
# AttributeError: type object 'People' has no attribute 'countryaaaaaa'
obj=getattr(People,'countryaaaaaa',None)
print(obj)
#返回值None

setattr()函数

描述:

setattr函数,用于设置属性值,该属性必须存在

语法:

setattr(object,name,value)

参数:

object--对象

name--字符串,对象属性

value--属性值

返回值:

class People:
  country='China'
  def __init__(self,name):
    self.name=name
  def people_info(self):
    print('%s is xxx' %(self.name))
obj=People('aaa')
setattr(People,'x',111) #等同于People.x=111
print(People.x)
#obj.age=18
setattr(obj,'age',18)
print(obj.__dict__)
#{'name': 'aaa', 'age': 18}
print(People.__dict__)
#{'__module__': '__main__', 'country': 'China', '__init__': <function People.__init__ at 0x1007d5620>, 'people_info': <function People.people_info at 0x10215d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None, 'x': 111}

delattr()函数

描述:

delattr函数用于删除属性

delattr(x,'foobar)相当于del x.foobar

语法:

setattr(object,name)

参数:

object--对象

name--必须是对象的属性

返回值:

示例:

class People:
  country='China'
  def __init__(self,name):
    self.name=name
  def people_info(self):
    print('%s is xxx' %(self.name))
delattr(People,'country') #等同于del People.country
print(People.__dict__)
{'__module__': '__main__', '__init__': <function People.__init__ at 0x1006d5620>, 'people_info': <function People.people_info at 0x10073d1e0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None}

补充示例:

class Foo:
  def run(self):
    while True:
      cmd=input('cmd>>: ').strip()
      if hasattr(self,cmd):
        func=getattr(self,cmd)
        func()
  def download(self):
    print('download....')
  def upload(self):
    print('upload...')
# obj=Foo()
# obj.run()

总结

以上所述是小编给大家介绍的详解Python3 中hasattr()、getattr()、setattr()、delattr()函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python获取豆瓣电影简介代码分享
Jan 16 Python
python里对list中的整数求平均并排序
Sep 12 Python
解析Python中的异常处理
Apr 28 Python
Python星号*与**用法分析
Feb 02 Python
python构建深度神经网络(DNN)
Mar 10 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
破解安装Pycharm的方法
Oct 19 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
Python docutils文档编译过程方法解析
Jun 23 Python
Python 操作SQLite数据库的示例
Oct 16 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 #Python
浅谈numpy数组中冒号和负号的含义
Apr 18 #Python
对python numpy数组中冒号的使用方法详解
Apr 17 #Python
JavaScript实现一维数组转化为二维数组
Apr 17 #Python
对python 矩阵转置transpose的实例讲解
Apr 17 #Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 #Python
解读python logging模块的使用方法
Apr 17 #Python
You might like
php中mysql模块部分功能的简单封装
2011/09/30 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Node.JS如何实现JWT原理
2020/09/18 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
Python中encode()方法的使用简介
2015/05/18 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python中单下划线_的常见用法总结
2018/07/10 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
linux面试题参考答案(8)
2016/04/19 面试题
区域销售经理岗位职责
2013/12/10 职场文书
后勤部长岗位职责
2013/12/14 职场文书
《手指教学》反思
2014/02/14 职场文书
体育课外活动总结
2014/07/08 职场文书
老公保证书怎么写
2015/02/26 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
公司人力资源管理制度
2015/08/05 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL