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

[复制链接]
发表于 2025-11-11 16:31:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
getattr 函数剖析

getattr 是 Python 内置函数,用于动态获取对象的属性或方法。它提供了机动的方式来访问对象的成员,而无需在代码中硬编码属性名或方法名。以下是 getattr 的详细剖析:
语法
  1. getattr(object, attribute[, default])
复制代码

  • object: 要从中获取属性的对象。
  • attribute: 属性名(字符串情势),可以是寻常属性或方法名。
  • default(可选): 如果指定的属性不存在,则返回默认值。如果不提供且属性不存在,会抛出 AttributeError。
功能


  • 动态获取属性或方法:可以根据字符串名称动态获取对象的属性或方法。
  • 制止硬编码:使代码更加机动和复用性更高。
  • 处置惩罚缺失属性:通过提供默认值来优雅地处置惩罚缺失的属性或方法。
示例

假设有一个类 MiniApp,此中包罗一个方法 current_page_method 和一个属性 page_title:
  1. class MiniApp:
  2.     page_title = "Home Page"
  3.     def current_page_method(self):
  4.         print("Current page method called")
  5. mini = MiniApp()
  6. method_name = "current_page_method"
  7. attr_name = "page_title"
  8. # 获取并调用方法
  9. getattr(mini, method_name)()  # 输出: Current page method called
  10. # 获取属性
  11. title = getattr(mini, attr_name)
  12. print(title)  # 输出: Home Page
  13. # 处理不存在的属性
  14. missing_attr = getattr(mini, 'non_existent_attr', 'Default Value')
  15. print(missing_attr)  # 输出: Default Value
复制代码
团结代码片断

代码:
  1. getattr(self.mini.native, 'hook_current_page_method')()
复制代码
这行代码的作用是从 self.mini.native 对象中获取名为 hook_current_page_method 的方法,并立刻调用它。如果该方法不存在且未提供默认值,会抛出 AttributeError。
注意事项


  • 确保属性存在:如果不确定属性是否存在,可以提供默认值来制止非常。
    1. method = getattr(self.mini.native, 'hook_current_page_method', None)
    2. if callable(method):
    3.     method()
    4. else:
    5.     print("Method not found or not callable")
    复制代码
  • 查抄返回值是否可调用:当获取的是方法时,确保返回值是可调用的(便是一个函数或方法对象)。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表