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()
函数将字典中的值赋给类对象的属性