我正在寫一個自定義編碼函數與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)'。 –