广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一文搞懂Python的hasattr()、getattr()、setattr() 函数用法
  • 821
分享到

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

2024-04-02 19:04:59 821人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

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() 函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

本文链接: https://www.lsjlt.com/news/117441.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文搞懂Python的hasattr()、getattr()、setattr() 函数用法
    目录hasattr()getattr()setattr()hasattr() hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下: ha...
    99+
    2022-11-10
  • Python的hasattr()、getattr()、setattr()函数怎么用
    本文小编为大家详细介绍“Python的hasattr()、getattr()、setattr()函数怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的hasattr()、getattr()、setattr()函数怎么用”文...
    99+
    2023-06-30
  • 一文搞懂Python的函数传参机制
    目录一、最简单的函数(无返回值、参数)二、最简单的函数(带返回值、无参数)三、带一个参数(无默认值)四、带有多个参数(无默认值)五、参数设置默认值(一个参数)六、参数设置默认值(多个...
    99+
    2022-11-11
  • 一文搞懂 MySQL 中的常用函数及用法
    0️⃣前言 MySQL是一种常用的关系型数据库管理系统,它提供了许多内置函数来处理数据。本文将介绍MySQL中的各种常用函数,包括字符串函数、日期函数、数学函数、聚合函数等。 文章目录 0️⃣前言1️⃣字符串函数1.1CON...
    99+
    2023-08-19
    mysql 数学建模 数据库
  • 一文搞懂Python中函数的定义与使用
    目录函数的定义和调用无参函数有参函数带有返回值的函数函数与循环结合与while循环结合与for循环结合函数的分类内置函数自定义函数函数的嵌套调用函数的嵌套定义函数的定义和调用 函数的...
    99+
    2022-11-11
  • 一文搞懂VueJs中customRef函数使用
    目录前言示例-延迟显示总结前言 ref是Vue官方提供的componsition API,将一个非响应式数据转变为响应式数据的函数,至于底层怎么实现数据的收集与响应式 使用者无需去...
    99+
    2023-05-14
    VueJs customRef函数使用 VueJs customRef
  • 一文搞懂c++中的std::move函数
    目录前言左值和右值左值引用右值引用std::move函数remove_reference源码剖析std::forward源码剖析std::move()源码剖析小结std::move使...
    99+
    2022-11-13
  • 一文搞懂python中Tkinter的使用
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了Tkinter的相关问题,Tkinter 是使用 python 进行窗口视窗设计的模块,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】一、前言1.1、...
    99+
    2022-07-04
    python
  • 一文搞懂Vue3中toRef和toRefs函数的使用
    目录toRef 函数toRef 函数使用ref 函数验证toRefs 函数toRefs 函数使用总结上一篇博文介绍了 vue3 里面的 ref 函数和 reactive 函数,实现响...
    99+
    2022-11-13
  • 一文搞懂C++多态的用法
    目录前言1.多态的概念2.C++中多态的分类(1)静态多态(2)动态多态3.多态的构成条件(1)举例(2)两个概念(3)多态的构成条件4.虚函数重写的两个例外(1)协变(2)析构函数...
    99+
    2022-11-13
  • 一文搞懂Pandas数据透视的4个函数的使用
    目录pandas.melt()pandas.pivot()pandas.pivot_table()pandas.crosstab()大家好,我是丁小杰! 今天和大家分享Pandas中...
    99+
    2022-11-11
  • 一文搞懂Python读取text,CSV,JSON文件的方法
    目录前言打开文件Python 中的文件读取模式读取文本文件读取 CSV 文件读取 JSON 文件总结前言 文件是无处不在的,无论我们使用哪种编程语言,处理文件对于每个程序员都是必不可...
    99+
    2022-11-11
  • 一文搞懂Python中subprocess模块的使用
    目录简介常用方法和接口subprocess.run()解析subprocess.Popen()解析Popen 对象方法subprocess.run()案例subprocess.cal...
    99+
    2022-11-21
    Python subprocess模块使用 Python subprocess模块 Python subprocess
  • 一文带你搞懂useCallback的使用方法
    目录一、useCallback的作用二、useRef解决方案三、useReducer解决方案四、usePersistFn解决方案总结一、useCallback的作用 usecallb...
    99+
    2023-02-07
    react usecallback usecallback用法 手动实现useCallback
  • Python函数介绍:getattr函数的用法和示例
    Python函数介绍:getattr函数的用法和示例在Python中,getattr()是一个内置函数,用于获取对象的属性值。在不知道对象的属性名称的情况下,可以使用getattr()函数来动态地访问属性。本文将介绍getattr()函数的...
    99+
    2023-11-04
    用法 示例 getattr
  • 一文搞懂Golang中iota的用法和原理
    目录前言iota的使用iota在const关键字出现时将被重置为0按行计数所有注释行和空行全部忽略跳值占位多个iota一行多个iota首行插队中间插队没有表达式的常量定义复用上一行的...
    99+
    2022-11-11
  • 一文搞懂redux在react中的初步用法
    Redux是一个数据状态管理插件,当使用React或是vue开发组件化的SPA程序时,组件之间共享信息是一个非常大的问题。例如,用户登陆之后客户端会存储用户信息(ID,头像等),而系...
    99+
    2022-11-12
  • 一篇文章彻底搞懂Python类属性和方法的调用
    目录一、类、对象概述二、类的定义与使用三、类属性和类方法的调用四、私有成员与公有成员总结Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象...
    99+
    2022-11-13
  • Python的getattr函数方法学习使用示例
    正文 __getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函...
    99+
    2022-11-11
  • 一文搞懂Vue3中的异步组件defineAsyncComponentAPI的用法
    目录前言传递工厂函数作为参数传递对象类型作为参数总结前言 当我们的项目达到一定的规模时,对于某些组件来说,我们并不希望一开始全部加载,而是需要的时候进行加载;这样的做得目的可以很好的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作