hutool.core.bean¶
Bean工具类,提供对象与字典之间的转换、属性复制等功能
Module Contents¶
Classes¶
Bean工具类,提供对象属性的读写、对象与字典互转、属性复制等功能 |
Data¶
API¶
- hutool.core.bean.T = 'TypeVar(...)'¶
- hutool.core.bean.__all__ = ('BeanUtil',)¶
- class hutool.core.bean.BeanUtil¶
Bean工具类,提供对象属性的读写、对象与字典互转、属性复制等功能
- static get_field_value(bean: Any, field_name: str) Any¶
获取对象字段值
- 参数:
bean – 对象实例
field_name – 字段名
- 返回:
字段值,若字段不存在返回None
- static set_field_value(bean: Any, field_name: str, value: Any) None¶
设置对象字段值
- 参数:
bean – 对象实例
field_name – 字段名
value – 要设置的值
- static map_to_bean(map_data: dict, bean_class: Type[hutool.core.bean.T], ignore_error: bool = False) hutool.core.bean.T¶
字典转对象
- 参数:
map_data – 字典数据
bean_class – 目标Bean类型
ignore_error – 是否忽略错误,若为True则跳过无法设置的字段
- 返回:
Bean对象
- static bean_to_map(bean: Any) dict¶
对象转字典,将对象中所有非下划线开头的公共属性转为字典
- 参数:
bean – Bean对象
- 返回:
字典
- static copy_properties(source: Any, target: Any, *ignore_properties: str) None¶
复制属性,将源对象的属性值复制到目标对象
- 参数:
source – 源对象
target – 目标对象
ignore_properties – 忽略的属性名列表
- static to_bean(source: Any, clazz: Type[hutool.core.bean.T], copy_options: Optional[dict] = None) hutool.core.bean.T¶
转为指定类型对象
- 参数:
source – 源对象或字典
clazz – 目标类型
copy_options – 复制选项字典,可包含ignore_properties列表
- 返回:
转换后的对象
- static to_bean_list(source_list: list, clazz: Type[hutool.core.bean.T]) List[hutool.core.bean.T]¶
转为对象列表
- 参数:
source_list – 源列表(字典列表或对象列表)
clazz – 目标类型
- 返回:
转换后的对象列表
- static is_readable_bean(obj: Any) bool¶
是否为可读的Bean,即拥有至少一个非下划线开头的公共属性
- 参数:
obj – 待检测对象
- 返回:
是否为可读Bean
- static fill_bean_with_map(map_data: dict, bean: Any, ignore_error: bool = False) None¶
用字典填充Bean,将字典中的键值对设置到Bean的对应属性上
- 参数:
map_data – 字典数据
bean – Bean对象
ignore_error – 是否忽略设置错误
- static is_bean(obj: Any) bool¶
判断对象是否为 Bean(有公共属性的对象)。
- 参数:
obj – 待检查的对象
- 返回:
是否为 Bean
- static is_empty(bean: Any) bool¶
判断 Bean 的所有公共字段是否都为 None。
- 参数:
bean – Bean 对象
- 返回:
是否所有字段为 None
- static is_not_empty(bean: Any) bool¶
判断 Bean 是否有非 None 字段。
- 参数:
bean – Bean 对象
- 返回:
是否有非 None 字段
- static has_null_field(bean: Any) bool¶
判断 Bean 是否有 None 字段。
- 参数:
bean – Bean 对象
- 返回:
是否有 None 字段
- static desc_for_each(obj: Any, func: callable) None¶
遍历对象的公共字段并应用函数。
- 参数:
obj – 对象或字典
func – 接受 (key, value) 参数的函数
- static fill_bean(obj: Any, supplier: callable) None¶
用默认值填充 Bean 中为 None 的字段。
- 参数:
obj – Bean 对象
supplier – 接受字段名返回默认值的函数
- static trim_str_fields(obj: Any) None¶
对 Bean 中所有字符串字段执行 strip() 去除首尾空白。
- 参数:
obj – Bean 对象
- static copy_to_list(source_list: list, clazz: Type[hutool.core.bean.T]) List[hutool.core.bean.T]¶
将字典列表拷贝为指定类型的对象列表。
等价于
to_bean_list()。- 参数:
source_list – 字典列表
clazz – 目标类型
- 返回:
对象列表
- static has_setter(bean: Any, field: str) bool¶
判断 Bean 是否有指定字段的 setter。
- 参数:
bean – Bean 对象或类
field – 字段名
- 返回:
是否有 setter
- static has_getter(bean: Any, field: str) bool¶
判断 Bean 是否有指定字段的 getter。
- 参数:
bean – Bean 对象或类
field – 字段名
- 返回:
是否有 getter
- static has_public_field(bean: Any, field: str) bool¶
判断 Bean 是否有指定的公共字段。
- 参数:
bean – Bean 对象
field – 字段名
- 返回:
是否有公共字段
- static create_dyna_bean(clazz: Optional[type] = None) Any¶
创建动态 Bean。
若提供 clazz 则实例化该类,否则返回 SimpleNamespace。
- 参数:
clazz – Bean 类型,为 None 时使用 SimpleNamespace
- 返回:
动态 Bean 对象
- static get_bean_desc(clazz: type) Dict[str, Any]¶
获取 Bean 的描述信息。
返回类名、模块、公共字段列表等。
- 参数:
clazz – Bean 类
- 返回:
描述字典
- static get_property(bean: Any, name: str) Any¶
获取 Bean 属性值。
优先尝试
get_<name>方法,再尝试直接getattr。- 参数:
bean – Bean 对象
name – 属性名
- 返回:
属性值
- static set_property(bean: Any, name: str, value: Any) None¶
设置 Bean 属性值。
优先尝试
set_<name>方法,再尝试直接setattr。- 参数:
bean – Bean 对象
name – 属性名
value – 属性值
- static map_to_bean_ignore_case(map_data: dict, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T¶
字典转对象(忽略键名大小写)。
将字典键转为小写后与 Bean 属性的小写名匹配。
- 参数:
map_data – 字典数据
clazz – 目标 Bean 类型
- 返回:
Bean 对象
- static fill_bean_with_map_ignore_case(map_data: dict, bean: Any) None¶
用字典填充 Bean(忽略键名大小写)。
- 参数:
map_data – 字典数据
bean – Bean 对象
- static to_bean_ignore_error(source: Any, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T¶
转为 Bean 对象,忽略转换错误。
- 参数:
source – 源对象或字典
clazz – 目标类型
- 返回:
Bean 对象
- static to_bean_ignore_case(source: Any, clazz: Type[hutool.core.bean.T]) hutool.core.bean.T¶
转为 Bean 对象,忽略大小写。
- 参数:
source – 源对象或字典
clazz – 目标类型
- 返回:
Bean 对象
- static bean_to_map_enhanced(bean: Any, is_underline: bool = True, ignore_null: bool = False) dict¶
对象转字典(增强版)。
- 参数:
bean – Bean 对象
is_underline – 是否将驼峰转为下划线
ignore_null – 是否忽略 None 值
- 返回:
字典
- static copy_properties_with_options(source: Any, target: Any, copy_options: Optional[dict] = None) None¶
带选项的属性复制。
copy_options 支持的键: -
ignore_properties: 忽略的属性名列表 -ignore_null: 是否跳过 None 值 -ignore_case: 是否忽略属性名大小写- 参数:
source – 源对象
target – 目标对象
copy_options – 复制选项
- static is_match_name(name1: str, name2: str, ignore_case: bool = True) bool¶
判断两个名称是否匹配。
- 参数:
name1 – 名称 1
name2 – 名称 2
ignore_case – 是否忽略大小写
- 返回:
是否匹配
- static edit(lst: list, func: Callable[[Any], Any]) list¶
对 Bean 列表中的每个元素应用转换函数。
- 参数:
lst – Bean 列表
func – 转换函数
- 返回:
转换后的列表
- static has_null_field_with_ignore(bean: Any, ignore_fields: Optional[List[str]] = None) bool¶
判断 Bean 是否有 None 字段(可指定忽略字段)。
- 参数:
bean – Bean 对象
ignore_fields – 要忽略的字段名列表
- 返回:
是否有 None 字段
- static get_field_names(obj: Any) List[str]¶
获取对象的所有公共字段名。
- 参数:
obj – 对象
- 返回:
字段名列表
- static is_common_fields_equal(obj1: Any, obj2: Any) bool¶
判断两个对象的公共字段值是否相等。
取两个对象字段名的交集,比较对应值。
- 参数:
obj1 – 对象 1
obj2 – 对象 2
- 返回:
公共字段是否全部相等