马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
getattr 函数剖析
getattr 是 Python 内置函数,用于动态获取对象的属性或方法。它提供了机动的方式来访问对象的成员,而无需在代码中硬编码属性名或方法名。以下是 getattr 的详细剖析:
语法
- getattr(object, attribute[, default])
复制代码
- object: 要从中获取属性的对象。
- attribute: 属性名(字符串情势),可以是寻常属性或方法名。
- default(可选): 如果指定的属性不存在,则返回默认值。如果不提供且属性不存在,会抛出 AttributeError。
功能
- 动态获取属性或方法:可以根据字符串名称动态获取对象的属性或方法。
- 制止硬编码:使代码更加机动和复用性更高。
- 处置惩罚缺失属性:通过提供默认值来优雅地处置惩罚缺失的属性或方法。
示例
假设有一个类 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")
复制代码 - 查抄返回值是否可调用:当获取的是方法时,确保返回值是可调用的(便是一个函数或方法对象)。
|