本文主要是介绍Python学习笔记之getattr和hasattr用法示例详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章...
1.getattr用法详解
1.1 基本作用
getattr(object, name[, default])
用于动态获取对象的属性值。
object
:要操作的对象。name
:属性名(字符串)。default
(可选):如China编程果属性不存在,返回的默认值(否则会抛异常)。
1.2 示例
class Person: name = "Alice" age = 20 person = Person() print(getattr(person, "name")) # 输出: Alice print(getattr(person, "age")) # 输出: 20 print(getattr(person, "gender", "女")) # 属性不存在,输出: 女
1.3 原理
getattr
实际上会调用对象的__getattribute__
方法。- 如果找不到属性且提供了
default
,则返回default
,否则抛出AttributeError
。
2.hasattr用法详解
2.1 基本作用
hasattr(object, name)
用于判断对象是否有某个属性。
object
:要检查的对象。name
:属性名(字符串)。
返回值:
- 存在则返回
True
,否则返回False
。
2.2 示例
class Person: name = "Alice" person = Person() China编程print(hasattr(person, "androidname")) # 输出: True print(hasattr(person, "age")) # 输出: False
2.3 原理
hasattr
实际上会尝试用getattr(object, name)
获取属性。- 如果没有抛出
AttributeError
,就返回True
,否则为False
。
3. 二者区别与联系android
3.1 联系
- 都用于动态操作对象属性,底层都依赖于魔法方法
__getattribute__
。
3.2 区别
getattr
用于取值,可以设置默认值。hasattr
用于判断属性是否存在,不取值。
3.3 注意
⚠️ 注意:
hasattr
内部实际上是 try-except 机制,属性访问可能触发属性的 getter 或 property 代码块!
4. 实用技巧与注意事项
4.1 实用技巧
- 用
getattr
动态读取属性,适合反射场景(如 ORM、插件、配置读取等)。 - 用
hasattr
判断属性是否存在,避免代码报错。
4.2 注意事项
php- 如果属性不存在且没有传递
default
,getattr
会直接报错。 hasattr
访问属性时,带有副作用时要小心(比如 property/自定义__getattr__
)。
5. 综合示例
5.1 示例代码
class Demo: def __init__(self): self.x = 10 @property def y(self): print("访问了 y") return 20 d = Demo() print(hasattr(d, 'x')) # True print(hasattr(d, 'y')) # True,同时会打印: 访问了 y print(getattr(d, 'y')) # 访问了 y,输出: 20 print(getattr(d, 'z', '不存在')) # 输出: 不存在
6. 总结表
方法 | 作用 | 返回值 | 不存在时行为 |
---|---|---|---|
getattr | 获取属性值 | 属性值/默认值 | 抛 AttributeError/返回默认 |
hasattr | 判断属性是否存在 | True/False | 返回 False |
到此这篇关于python学习笔记之getattr和hasattr用法的文章就介绍到这了,更多相关Python getattr和hasattr用法内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Python学习笔记之getattr和hasattr用法示例详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!