一文搞懂Python的hasattr()、getattr()、setattr() 函数用法

 更新时间:2022年04月22日 11:11:08   作者:昜羊  
python中的getattr()、setattr()、hasattr()函数均是对类属性或方法的操作,其中getattr()用于获取类或实例中指定方法获取属性的值,setattr()用于设置类或实例中属性或方法,hasattr()用于判断类或实例中是否存在指定的属性或方法,本文通过例子给大家详解,一起看看吧

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() 函数用法的文章就介绍到这了,更多相关Python的hasattr()、getattr()、setattr() 函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python变量、数据类型、数据类型转换相关函数用法实例详解

    Python变量、数据类型、数据类型转换相关函数用法实例详解

    这篇文章主要介绍了Python变量、数据类型、数据类型转换相关函数用法,结合实例形式详细分析了Python变量类型、基本用法、变量类型转换相关函数与使用技巧,需要的朋友可以参考下
    2020-01-01
  • openstack中的rpc远程调用的方法

    openstack中的rpc远程调用的方法

    今天通过本文给大家分享openstack中的rpc远程调用的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • 详解Python中数据处理的方法总结及实现

    详解Python中数据处理的方法总结及实现

    数据增强作为前处理的关键步骤,在整个计算机视觉中有着具足轻重的地位。本文为大家总结了Python中数据处理的方法及实现,需要的可以参考一下
    2022-09-09
  • Python实现求数列和的方法示例

    Python实现求数列和的方法示例

    这篇文章主要介绍了Python实现求数列和的方法,涉及Python数值运算相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Ubuntu20.04环境安装tensorflow2的方法步骤

    Ubuntu20.04环境安装tensorflow2的方法步骤

    这篇文章主要介绍了Ubuntu20.04环境安装tensorflow2的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 13个Pandas实用技巧,助你提高开发效率

    13个Pandas实用技巧,助你提高开发效率

    这篇文章主要介绍了13个Pandas实用技巧,帮助你提高python开发的效率,感兴趣的朋友可以了解下
    2020-08-08
  • pandas DataFrame 赋值的注意事项说明(index)

    pandas DataFrame 赋值的注意事项说明(index)

    这篇文章主要介绍了pandas DataFrame 赋值的注意事项说明(index),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python中yield关键字的理解与使用

    Python中yield关键字的理解与使用

    yield关键字用于创建生成器函数,一种高效利用内存的函数类型,可以像迭代器对象一样使用,本文主要介绍了Python中的yield关键字的应用,需要的可以参考下
    2023-08-08
  • Python实现实时监测可视化数据大屏

    Python实现实时监测可视化数据大屏

    实时监测的可视化数据大屏是一种非常有用的工具,可以帮助我们实时了解数据的变化和趋势,下面我们将介绍如何使用Python代码实现实时监测的可视化数据大屏,需要的可以参考一下
    2023-06-06
  • Python文件打开读取写入方法实用案例

    Python文件打开读取写入方法实用案例

    我们在工作中经常需要用python对文本文件进行内容的读取和写入,下面这篇文章主要给大家介绍了关于Python文件打开读取写入方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论