[Python] 动态获取和设置对象的属性

在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

猜你喜欢

转载自blog.csdn.net/Hudas/article/details/130688416