Python 内置函数---getattr()的使用

getattr() 是 Python 的内置函数,用于动态获取对象的属性值 。
基本语法 : |getattr(object, name[, default])|

参数介绍:

  • object:要获取属性的对象
  • name:属性名(字符串)
  • default:可选,如果属性不存在时返回的默认值

1. 基本用法

python 复制代码
class Person:
    def __init__(self): 
    self.name = "张三" 
    self.age = 25
person = Person()

# 等价于 person.name 
name = getattr(person, "name") 
print(name) # 输出:张三

# 等价于 person.age 
age = getattr(person, "age") 
print(age) # 输出:25

使用默认值(属性不存在时)

python 复制代码
# 属性存在时 
email = getattr(person, "email", "未设置邮箱") 
print(email) # 输出:未设置邮箱(因为person没有email属性) 
# 等价于: 
if hasattr(person, "email"): 
    email = person.email 
else: 
    email = "未设置邮箱"

3. 动态属性名(最常用的场景)

python 复制代码
class Config: 
    def __init__(self): 
        self.host = "localhost" 
        self.port = 8080 
config = Config() 
attributes = ["host", "port", "timeout"] 
for attr in attributes: 
    value = getattr(config, attr, "未配置") 
    print(f"{attr}: {value}") 
    
# 输出: 
# host: localhost 
# port: 8080 
# timeout: 未配置

4. 获取方法(函数属性)

python 复制代码
class Calculator: 
def add(self, a, b): 
    return a + b 
    
calc = Calculator() 
# 获取方法对象 
add_method = getattr(calc, "add") 
result = add_method(3, 5) 
print(result) # 输出:8
相关推荐
duyacode4 天前
FastAPI为什么成为默认答案
程序员
Java_AI工程师4 天前
90%的人写Function Calling,只写了"把参数传给工具执行"这一步,剩下的参数校验、错误重试、超时控制、结果格式化,全是空白。
java·人工智能·程序员
Hilaku4 天前
为什么死磕 1px 的团队,用户体验反而更差?
前端·javascript·程序员
codigger4 天前
我用 AI 做完整项目后,总结出一套把需求钉死的工作流
ai·程序员·编程·ai编程·#人工智能
SimonKing4 天前
SpringBoot 集成 SSE 实现服务端推送或可代替Websocket
java·后端·程序员
挖掘狂人4 天前
用 AI 写代码别只甩一句指令,这套工作流救过我的项目
程序员·ai编程·codebuddy
Sam_Deep_Thinking4 天前
关于java final关键字的可见性
java·后端·面试·程序员
狂师4 天前
cloudflared,不需要服务器和公网 IP 的免费内网穿透,一条命令上手
服务器·程序员·开源
demo007x4 天前
我用 AI 做了一个跨平台的PopClip:拾趣Magpie
程序员·github·ai编程
zzzzzz3104 天前
每日一条技术记录:把碎片学习变成可复盘的知识卡片
程序员·markdown·沸点