开发者

Python学习笔记之getattr和hasattr用法示例详解

目录
  • 1.getattr用法详解
    • 1.1 基本作用
    • 1.2 示例
    • 1.3 原理
  • 2.hasattr用法详解
    • 2.1 基本作用
    • 2.2 示例
    • 2.3 原理
  • 3. 二者区别与联系
    • 3.1 联系
    • 3.2 区别
    • 3.3 注意
  • 4. 实用技巧与注意事项
    • 4.1 实用技巧
    • 4.2 注意事项
  • 5. 综合示例
    • 5.1 示例代码
  • 6. 总结表

    1.getattr用法详解

    1.1 基本作用

    getattr(object, name[, default])

    用于动态获取对象的属性值。

    • object:要操作的对象。
    • name:属性名(字符串)。
    • default(可选):如编程客栈果属性不存在,返回的默认值(否则会抛异常)。

    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()
    
    编程客栈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
    • 如果属性不存在且没有传递 defaultgetattr 会直接报错。
    • 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用法内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜