hasattr()

hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。
该函数的语法格式如下:

hasattr(obj, name)

其中 obj 指的是某个类的实例对象,name 表示指定的属性名或方法名,返回BOOL值,有name属性返回True, 否则返回False。

例子:

class demo:def __init__ (self):self.name = "lily"def say(self):print("say hi")d = demo()
print(hasattr(d, 'name'))
print(hasattr(d, 'say'))
print(hasattr(d, 'eat'))

运行结果如下:

True
True
False

getattr()

getattr() 函数获取某个类实例对象中指定属性的值。
该函数的语法格式如下:

getattr(object, name[, default])

其中,obj 表示指定的类实例对象,name 表示指定的属性名,而 default 是可选参数,用于设定该函数的默认返回值,即当函数查找失败时,如果不指定 default 参数,则程序将直接报 AttributeError 错误,反之该函数将返回 default 指定的值。

例子:

class demo:def __init__ (self):self.name = "lily"def say(self):return "say hi"d = demo()
print(getattr(d, 'name'))
print(getattr(d, 'say'))
print(getattr(d, 'eat'))

运行结果如下:

lily
<bound method demo.say of <__main__.demo object at 0x7f31c630d0a0>>
Traceback (most recent call last):File "/test.py", line 11, in <module>print(getattr(d, 'eat'))
AttributeError: 'demo' object has no attribute 'eat'

可以看到,对于类中已有的属性,getattr() 会返回它们的值,而如果该名称为方法名,则返回该方法的状态信息;反之,如果该明白不为类对象所有,要么返回默认的参数,要么程序报 AttributeError 错误。
需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,可以在后面添加一对括号。比如:

class demo:def __init__ (self):self.name = "lily"def say(self):return "say hi"def eat(self, something):return f"eat {something}"d = demo()
print(getattr(d, 'name'))
print(getattr(d, 'say'))
print(getattr(d, 'eat')('apple'))
print(getattr(d, 'eat', 'no eat')('banana'))

运行结果如下:

lily
<bound method demo.say of <__main__.demo object at 0x7fe99b1ca0a0>>
eat apple
eat banana

setattr()

setattr() 函数最基础的功能是修改类实例对象中的属性值。其次,它还可以实现为实例对象动态添加属性或者方法。
该函数的语法格式如下:

setattr(obj, name, value)

例子:

class demo:def __init__ (self):self.name = "lily"d = demo()
print(getattr(d, 'name'))
print('----------')
setattr(d, 'name', 'tom')
print(getattr(d, 'name'))
print('----------')
print(hasattr(d, 'age'))
setattr(d, 'age', '18')
print(hasattr(d, 'age'))
print(getattr(d, 'age'))

运行结果如下:

lily
----------
tom
----------
False
True
18

Python的hasattr()、getattr()、setattr() 函数用法相关推荐

  1. python中setattr用法_详解Python的hasattr() getattr() setattr() 函数使用方法

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...

  2. Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 (一) hasattr(object,name) 函数 判断一个对象里面是否有 name 属性或者 name ...

  3. Python中hasattr() getattr() setattr() 函数的使用

    hasattr(object,name)函数: 判断一个对象里面是否有name属性或者name方法,返回bool值,有name属性(方法)返回True,否则返回False. class functio ...

  4. Python的hasattr() getattr() setattr() 函数使用方法

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. >>> class ...

  5. [转载] python hasattr函数_Python的hasattr() getattr() setattr() 函数使用方法详解

    参考链接: Python hasattr() hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回Fa ...

  6. python hasattr() getattr() setattr()函数的使用

    hasattr(object,name):用于判断一个对象里中是否存在name这一特性. 由测试结果可知,对象a里包含特性name和方法greet(),所以输出True,而不包含特性age,所以has ...

  7. python hasattr函数_Python的hasattr() getattr() setattr() 函数使用方法详解

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...

  8. python hasattr函数_Python的反射机制、hasattr() getattr() setattr() 函数使用方法详解

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...

  9. Python hasattr() getattr() setattr() 函数使用

    1.setattr(object, name, values) 给对象设置属性,如果对象不存在,则创建对象 layers = nn.Sequential(nn.Conv2d(curr_dim, cur ...

  10. Python的hasattr(),getattr(),setattr()

    1. hasattr(object, name) 判断object里是否有name属性,有就返回True,没有则返回False. class MyClass(object):name = 'jack' ...

最新文章

  1. OpenCL框架与示例
  2. CentOS7下的Django2集成部署五:Jenkins的流水线部署pipeline-job
  3. c# 扩展方法奇思妙用高级篇六:WinForm 控件选择器
  4. python模块下载连接清华镜像的具体步骤_如何下载Pycharm开源版以及设置国内镜像源-百度经验...
  5. CSS边界属性的负值
  6. 断言、触发器、存储过程
  7. TensorFlow入门--队列与TensorBoard操作
  8. FPGA机器学习之学习的方向
  9. 双重差分模型能做固定效应吗_互助问答第53期:控制时间效应、交互项等问题...
  10. MySQL之视图、触发器、事务、存储过程、函数
  11. 1085 Perfect Sequence (25 分)
  12. 基于TMC4361-超静音闭环步进电机驱动方案
  13. 跨境电商亚马逊最新骗局揭秘:所谓的跨境电商亚马逊店铺真的能赚钱吗?真的靠谱?
  14. Windows Live SkyDrive 介绍之图片存储:摄影师在线图片展示的新选择
  15. lambda分组集合中list和set区别
  16. 测试人员的KPI考核指标
  17. 微信小程序 实现 树形菜单其实很简单
  18. 2019数博会参会嘉宾数量、层级、范围创历届新高,全球领袖级企业竞相亮相
  19. 综述 | 目标检测中的多尺度检测方法
  20. 可以降低汽车气缸里面的机油由于摩擦产生的蓝烟的机油添加剂

热门文章

  1. python中格式化输出三种形式学习总结
  2. 华为P9手机的品质还需工匠精神
  3. 共识是群体的意见和信念,Web3共识的来源有哪些?
  4. 2006-11-26 理想的生活?
  5. python 爬虫入门 到 初步精通罢
  6. MySQL该如何将月增上亿条数据的单表处理方案优雅落地?
  7. 计算机桌面图标教案,《认识“我的电脑”》教学设计
  8. 深度学习“三巨头”、图灵奖得主 Yann LeCun:我没有天赋,所以才追随聪明人
  9. 从微视“脱单”看短视频的社交价值
  10. zynq 原理图对照说明