在Python中,可以使用以下方法动态获取和设置对象的属性
1.动态获取对象的属性
可以使用getattr()函数来动态获取对象的属性
# object: 对象
# name: 对象属性,字符串类型
# default: 默认返回值,如果不提供该参数,在没有对应属性时,会引发异常
getattr(object, name[, default])
getattr()函数用于返回一个对象属性值,该函数通常接受两个参数:对象和属性名称,如果对象存在该属性,则返回其值,否则会引发异常
class MyClass:
def __init__(self):
self.my_attribute = 'Hello World!'
my_object = MyClass()
# 动态获取属性
my_attribute_value1 = getattr(my_object, 'my_attribute')
print(my_attribute_value1) # 输出: Hello World!
my_attribute_value2 = getattr(my_object, 'my_name')
# NameError: name 'my_attribute_value2' is not defined
print(my_attribute_value2)
my_attribute_value3 = getattr(my_object, 'my_name', 'There is no attribute value')
# There is no attribute value
print(my_attribute_value3)
2.动态设置对象的属性
可以使用setattr()函数来动态设置对象的属性
# object: 对象
# name: 对象属性,字符串类型
# value: 属性值
setattr(object, name, value)
该函数接受三个参数:对象、属性名称和属性值。如果对象存在该属性,则会将其值设置为指定的属性值,否则会创建该属性并设置其值
class MyClass:
def __init__(self):
self.my_attribute = 'Hello World!'
my_object = MyClass()
# 动态获取属性
my_attribute_value = getattr(my_object, 'my_attribute')
print(my_attribute_value) # Hello World!
# 动态设置属性
setattr(my_object, 'my_attribute', 'Goodbye World!')
# 动态获取属性
my_attribute_value = getattr(my_object, 'my_attribute')
print(my_attribute_value) # Goodbye World!
如果属性不存在会创建一个新的对象属性,并对属性赋值
class MyClass:
def __init__(self):
self.my_attribute = 'Hello World!'
my_object = MyClass()
# 动态设置属性
setattr(MyClass, 'name', 'Andy')
print(my_object.name) # Andy