简述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__
等。