chinapnr / fishbase

自主开发、整理的一套 Python 基础函数库,涵盖 system 系统增强包、logger 日志记录增强包、file 文件处理增强包、 date 日期处理函数包、data 数据信息处理函数包、csv 处理增强函数包、crypt 加密/编码增强包等,可减少程序开发工作量、降低引用复杂度。
MIT License
94 stars 29 forks source link

object,修复变量声明中的缺陷 #271

Closed wingfish closed 4 years ago

wingfish commented 4 years ago

从单元测试代码中发现

def test_deserialize_instance(self): temp_dict = {'user': {'name': {'last_name': 'zhang', 'first_name': 'san'}, 'address': 'Beijing'}} new_obj = DeserializeInstance(temp_dict) assert hasattr(new_obj, 'user') assert hasattr(new_obj.user, 'name') assert new_obj.user.name.last_name == 'zhang' assert new_obj.user.address == 'Beijing'

user 对象没有预先申明

修改代码,在使用 user 属性前先进行申明 ` user: None

def __init__(self, obj_dict):
    self.user = None
    for key, value in obj_dict.items():
        if isinstance(value, dict):
            setattr(self, key, DeserializeInstance(value) if isinstance(value, dict) else value)
        else:
            setattr(self, key, value)`