跳到主要内容

简述Python 中如何动态获取和设置对象的属性?

参考答案:

在 Python 中,可以使用内置的 getattr()setattr() 函数来动态获取和设置对象的属性。这两个函数都接受三个参数:对象本身,属性名称(以字符串形式给出),以及可选的值(对于 setattr())。

  • getattr(object, name[, default]):获取对象的属性。如果属性存在,则返回其值。如果属性不存在并且提供了默认值,则返回默认值。如果没有提供默认值并且属性不存在,则引发 AttributeError 异常。
  • setattr(object, name, value):设置对象的属性。如果属性已经存在,则更新其值。如果属性不存在,则创建新属性。

下面是一个简单的例子,展示了如何使用 getattr()setattr()

class MyClass:
    def __init__(self):
        self.my_attribute = "Hello, World!"

# 创建一个 MyClass 的实例
my_instance = MyClass()

# 使用 getattr() 获取属性
print(getattr(my_instance, "my_attribute"))  # 输出 "Hello, World!"

# 使用 setattr() 设置属性
setattr(my_instance, "my_attribute", "New value!")
print(my_instance.my_attribute)  # 输出 "New value!"

# 尝试获取不存在的属性,并提供默认值
print(getattr(my_instance, "nonexistent_attribute", "Default value"))  # 输出 "Default value"

# 尝试获取不存在的属性,不提供默认值,将引发 AttributeError
# print(getattr(my_instance, "nonexistent_attribute"))  # 引发 AttributeError

需要注意的是,getattr()setattr() 不仅可以用于实例属性,还可以用于类属性和模块级别的属性。此外,这些函数还可以用于处理那些在 Python 中被视为特殊或魔法的方法,如 __init____call__ 等。