我正在寻找一种正确的方法来检查一个可能是object()实例的对象类型,现在我正在这样做:
def _default_json_encoder(obj):
""" Default encoder, encountered must have to_dict
method to be serialized. """
if hasattr(obj, "to_dict"):
return obj.to_dict()
else:
# object() is used in the base code to be evaluated as True
if type(obj) == type(object()):
return {}
raise TypeError(
'Object of type %s with value of '
'%s is not JSON serializable'
% (type(obj), repr(obj))
)
但是
if type(obj) == type(object()):
return {}
不幸的是,不推荐
if isinstance(obj, object):
return {}
将无效,因为所有对象都将被评估为True。
那么type(obj) == type(object())
是唯一的方法吗?
答案 0 :(得分:1)
如果您的数据结构中确实有object()
个实例,那么您可以使用:
type(obj) is object
测试直接实例(类通常是单例)。
但是,我重新考虑我的数据结构,并使用另一个原始值(如True
),专用单例或专用类。
一个专门的单身人士可能是:
sentinel = object()
然后测试该哨兵:
if obj is sentinel:
return {}