generic模块说明¶
generic模块主要定义一些公共的基础通用类。
NullObj(空对象定义类)¶
NullObj为空对象定义类,用于支持可动态增加属性的使用场景。
普通用法¶
# 定义需含属性的对象
_obj = NullObj()
# 动态增加属性和值
_obj.attr1 = 'attr1_value'
_obj.attr2 = (5, 6, 7)
_obj.attr3 = NullObj() # 属性嵌套属性
_obj.attr3.prop = 'level 2 value'
# 访问属性
for item in _obj.attr2:
print(_obj.attr3.prop + str(item)
与dict对象相互转换¶
# dict转换为NullObj
_dict = {
'attr1': 'attr1_value',
'attr2': (5, 6, 7),
'attr3': {'prop': 'level 2 value'}, # 如果还有字典,则会生成嵌套属性
}
_obj = NullObj.get_nullobj_from_dict(_dict)
# 访问对象值
print(_obj.attr3.prop)
# NullObj转换为dict,可以指定某些属性不参加转换
_dict = NullObj.get_object_attr_dict(_obj, ignored_key='attr2')
json字符串转换¶
主要用于支持base_tools.string_tool.StringTool的json对象转换方法:object_to_json和json_to_object。
# 创建对象
_obj = NullObj()
_obj.attr1 = 'attr1_value'
_obj.attr2 = (5, 6, 7)
# 与json直接转换
_json_str = _obj.__json__()
_new_obj = NullObj.__fromjson__(_json_str)
# 通过StringTool处理
_json_str = StringTool.object_to_json(_obj)
_new_obj = StringTool.json_to_object(_json_str, class_ref=NullObj) # 需指定对象类型
CResult(通用错误类)¶
通用错误类定义,便于规范所有的错误信息返回判断标准,该类继承自NullObj,因此可直接在该类的实例对象上直接添加属性用于各类返回值。
注意:CResult是HiveNetCore中的基础类,大部分函数交互都会使用该类进行返回处理,建议严格按照这个规则进行编码
错误类的主要属性包括:
code - 错误码,’00000’代表成功,参照HiveNet的错误码规范
msg - 错误信息描述,如果i18n_obj不为None时,该参数传入的是国际化的消息ID;如果传入msg=None,则代表自动通过code查找HiveNet的错误码具体的错误描述(需要增加或修改错误码映射,可到包安装目录的HiveNetCore.hivenet_error_code目录下修改错误码映射及国际化文件,格式参考simple_i18n)
error - 发生异常时的异常类型type的字符串
trace_str - 错误追踪堆栈日志,异常时的traceback.format_exc()
i18n_msg_paras - 与msg配套使用,可通过$1,$2等占位符进行消息内容的变量替换
创建并使用CResult¶
# 如果错误码是使用HiveNet错误码规范的情况,msg可以自动获取并填写
_result = CResult(code='00000')
# 补充其他返回值
_result.attr = '其他返回值'
# 判断是否成功,注意该方法只适用HiveNet错误码规范
if not _result.is_success():
print('失败:' + _result.msg)
# 自定义错误码,使用占位符的方式
_result = CResult(code='-1', msg='run error: $1', error=str(type(Exception)), i18n_msg_paras=('EX Model'))
配合exception_tool使用错误码¶
_result = CResult(code='00000')
with ExceptionTools.ignored_CResult(result_obj=_result, error_map={ZeroDivisionError: ('10001', 'zero division error')},expect=(ValueError),logger=None,self_log_msg=''):
# 当遇到异常时可以自动匹配并修改错误类的值
i = 1/0
i = i + 1000
json字符串转换¶
主要用于支持base_tools.string_tool.StringTool的json对象转换方法:object_to_json和json_to_object。与NullObj类似,不再重复说明,但注意这种方式转换,不支持国际化控件的转换处理。