对象工具 - ObjectUtil¶
由来¶
类似于 Apache Commons Lang 中的 ObjectUtils,提供对象判空、默认值、比较等常用操作。
方法¶
判空¶
from hutool import ObjectUtil
ObjectUtil.is_null(None) # True
ObjectUtil.is_not_null("abc") # True
ObjectUtil.is_empty("") # True
ObjectUtil.is_empty([]) # True
ObjectUtil.is_empty(None) # True
ObjectUtil.is_not_empty("abc") # True
默认值¶
ObjectUtil.default_if_null(None, "default") # "default"
ObjectUtil.default_if_null("value", "default") # "value"
ObjectUtil.default_if_empty("", "default") # "default"
ObjectUtil.default_if_blank(" ", "default") # "default"
批量判断¶
ObjectUtil.has_null("a", None, "b") # True
ObjectUtil.has_empty("a", "", "b") # True
ObjectUtil.is_all_empty("", None, []) # True
ObjectUtil.is_all_not_empty("a", "b", "c") # True
比较¶
ObjectUtil.equals("abc", "abc") # True
ObjectUtil.not_equal("abc", "def") # True
ObjectUtil.compare(1, 2) # -1
工具¶
ObjectUtil.length("hello") # 5
ObjectUtil.length([1, 2, 3]) # 3
ObjectUtil.contains([1, 2, 3], 2) # True
ObjectUtil.to_string(123) # "123"
其他¶
# 克隆(仅 list/dict 深拷贝)
cloned = ObjectUtil.clone_if_possible([1, 2])
# 数字有效性
ObjectUtil.is_valid_if_number(1.5) # True
ObjectUtil.is_valid_if_number(float("nan")) # False
# supplier 惰性默认值
ObjectUtil.default_if_null_supplier(None, lambda: "default") # "default"
ObjectUtil.default_if_empty_supplier("", lambda: "default") # "default"
ObjectUtil.default_if_blank_supplier(" ", lambda: "default") # "default"
安全属性获取¶
# getAttrSafe — 安全获取对象属性(不存在返回默认值)
class User:
name = "张三"
ObjectUtil.get_attr_safe(User(), "name") # "张三"
ObjectUtil.get_attr_safe(User(), "age", 0) # 0
ObjectUtil.get_attr_safe(None, "name") # None
键格式化¶
# getKeyFmt — 格式化 Map 键
ObjectUtil.get_key_fmt({"name": "test"}, "name", "key_{}") # "test"
ObjectUtil.get_key_fmt({}, "name", "key_{}") # "key_name"
解包到字典¶
# unpackToDict — 将对象属性解包为字典
class Config:
host = "localhost"
port = 8080
ObjectUtil.unpack_to_dict(Config())
# {"host": "localhost", "port": 8080}
异常安全¶
# noneOnException — 捕获异常返回 None
ObjectUtil.none_on_exception(lambda: 1 / 0) # None
ObjectUtil.none_on_exception(lambda: 100) # 100
空值计数¶
# emptyCount — 统计空值数量(None/""/空集合)
ObjectUtil.empty_count(None, "", [], "abc") # 3
ObjectUtil.empty_count(1, 2, 3) # 0
安全相等比较¶
# equal — None 安全相等比较
ObjectUtil.equal(None, None) # True
ObjectUtil.equal("abc", "abc") # True
ObjectUtil.equal(None, "abc") # False