python-字典转为类对象

类没有定义属性,自动将字典的属性作为类属性

class DictToObject:
    def __init__(self, dictionary):
        for key, value in dictionary.items():
            if isinstance(value, dict):
                setattr(self, key, DictToObject(value))
            else:
                setattr(self, key, value)
 # 示例字典
dictionary = {
    'name': 'John',
    'age': 25,
    'address': {
        'street': '123 Main St',
        'city': 'New York'
    }
}
 # 将字典转化为类对象
obj = DictToObject(dictionary)
 # 访问类对象的属性
print(obj.name)  # 输出: John
print(obj.age)  # 输出: 25
print(obj.address.street)  # 输出: 123 Main St
print(obj.address.city)  # 输出: New York

# 在上面的示例中,定义了一个 DictToObject 类,它接受一个字典作为参数,
# 并将字典的键值对转化为类对象的属性。如果字典的值本身也是一个字典,则递归地将其转化为嵌套的类对象

类本身定义了对象属性,通过hasattr() 函数判断,有属性才进行自动赋值

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
 person_dict = {
    'name': 'John',
    'age': 25,
    'address': '123 Main St'
}
 person = Person('', 0)  # 创建一个空的Person对象
 for key, value in person_dict.items():
    if hasattr(person, key):
        setattr(person, key, value)
 print(person.name)  # 输出: John
print(person.age)  # 输出: 25

# 在上面的示例中,首先创建了一个空的 Person 对象,然后遍历字典中的键值对。
# 如果字典中的键与类对象的属性名相匹配(通过 hasattr() 函数判断),则使用 setattr() 函数将字典中的值赋给类对象的属性

 

posted @ 2023-07-14 08:53  ilovetesting  阅读(2526)  评论(0编辑  收藏  举报