Python __getattr__()函数的应用

getattr(self, item)函数

class Foo(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show(self):
        return '123'
    def __getattr__(self, item):
        #执行对象中没有的成员时,会执行该函数
        print('item',item)
        return '999'

obj=Foo('sally',40)

print('show:',obj.show())
#xxx不是obj对象中的成员,所以会触发__getattr__(self,item)函数,并将xxx做为参数。
print('getattr return:',obj.xxx)      

输出:

show: 123
item xxx
getattr return: 999
### Python `getattr` 函数的使用方法 `getattr` 是 Python 中的一个内置函数,用于获取对象属性的值。其基本语法如下: ```python value = getattr(object, attribute, default) ``` 其中: - **object**: 要从中检索属性的对象。 - **attribute**: 属性名称(字符串形式),表示要访问的具体属性名。 - **default** (可选): 如果指定的属性不存在,则返回默认值;如果未提供此参数且属性不存在,则会抛出 `AttributeError` 异常。 #### 示例代码展示 以下是几个具体的例子来说明如何使用 `getattr` 函数: ```python class ExampleClass: def __init__(self): self.name = "Example" def func(self): return "This is a function" # 创建类实例 obj = ExampleClass() # 获取存在的属性 name_value = getattr(obj, 'name') print(name_value) # 输出: Example [^1] # 获取并调用存在的方法 method_call = getattr(obj, 'func')() print(method_call) # 输出: This is a function [^2] # 尝试获取不存在的属性,并设置默认值 missing_attr = getattr(obj, 'age', 'Default Value') print(missing_attr) # 输出: Default Value # 不设默认值尝试获取不存在的属性,将引发异常 try: no_default = getattr(obj, 'nonexistent_attribute') except AttributeError as e: print(f"Caught an exception: {e}") # 输出: Caught an exception: 'ExampleClass' object has no attribute 'nonexistent_attribute' ``` 上述代码展示了多种场景下 `getattr` 的应用方式,包括正常情况下的属性读取、方法调用以及处理缺失属性的情况。 #### 关于 `self` 和动态属性访问 当在面向对象编程中需要对当前实例 (`self`) 动态地访问某些未知或不确定的属性时,也可以利用 `getattr()` 实现灵活操作。例如,在某个复杂逻辑里可能无法提前预知具体字段的名字,这时可以借助该工具完成任务[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暮毅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值