Python内置函数getattr动态获取属性或方法

getattr 函数解析

getattr 是 Python 内置函数,用于动态获取对象的属性或方法。它提供了灵活的方式来访问对象的成员,而无需在代码中硬编码属性名或方法名。以下是 getattr 的详细解析:

语法
getattr(object, attribute[, default])
  • object: 要从中获取属性的对象。
  • attribute: 属性名(字符串形式),可以是普通属性或方法名。
  • default(可选): 如果指定的属性不存在,则返回默认值。如果不提供且属性不存在,会抛出 AttributeError
功能
  1. 动态获取属性或方法:可以根据字符串名称动态获取对象的属性或方法。
  2. 避免硬编码:使代码更加灵活和复用性更高。
  3. 处理缺失属性:通过提供默认值来优雅地处理缺失的属性或方法。
示例

假设有一个类 MiniApp,其中包含一个方法 current_page_method 和一个属性 page_title

class MiniApp:
    page_title = "Home Page"

    def current_page_method(self):
        print("Current page method called")

mini = MiniApp()
method_name = "current_page_method"
attr_name = "page_title"

# 获取并调用方法
getattr(mini, method_name)()  # 输出: Current page method called

# 获取属性
title = getattr(mini, attr_name)
print(title)  # 输出: Home Page

# 处理不存在的属性
missing_attr = getattr(mini, 'non_existent_attr', 'Default Value')
print(missing_attr)  # 输出: Default Value
结合代码片段

代码:

getattr(self.mini.native, 'hook_current_page_method')()

这行代码的作用是从 self.mini.native 对象中获取名为 hook_current_page_method 的方法,并立即调用它。如果该方法不存在且未提供默认值,会抛出 AttributeError

注意事项
  • 确保属性存在:如果不确定属性是否存在,可以提供默认值来避免异常。

    method = getattr(self.mini.native, 'hook_current_page_method', None)
    if callable(method):
        method()
    else:
        print("Method not found or not callable")
    
  • 检查返回值是否可调用:当获取的是方法时,确保返回值是可调用的(即是一个函数或方法对象)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值