我正在写一个自定义编码函数与msgpack-python一起使用。我希望将任何numpy.float对象转换为float,然后让msgpack-python对它进行序列化。我的编码功能看起来像这样:鸭子打字numpy浮动类型
def encode_custom(obj):
if issubclass(obj.__class__,np.float):
obj = float(obj)
return obj
它工作得很好。然而,How do I check (at runtime) if one class is a subclass of another?顶部投票答案表明这是一个坏主意。我认为这是因为这种方法不使用鸭子打字。
有没有办法鸭式编码功能?
编辑:请注意,我只想浮动般的对象转换为浮动。更好地表示为另一种类型(例如整数)的对象应该使用该其他类型,即使它们可以在浮点对象中使用。
'尝试:除了ValueError异常回报率浮动(OBJ) :return obj' – SethMMorton
@SethMMorton这也将整数转换为浮点数。 –
在某些情况下这是一个坏主意。你特别说过你想转换numpy浮点数,所以这看起来很好。不过,我建议只使用'isinstance(obj,np.float)'。 –