私はjson.JSONEncoderに基づいているクラス定義を持っています。その中でデフォルトのメソッドをオーバーライドしています。今では、そのクラスのインスタンスでjson.dumpsを呼び出すと、デフォルトのメソッドが呼び出されていませんか?私が見逃したことはありますか?JSONエンコードのカスタムクラスがオーバーライドのデフォルトを呼び出さない
私のコード例では、これは魔法のようにシリアル化されたオブジェクトを生成するとは思っていませんが、print("here")
が実行されると思います。
import json
class MyClass(json.JSONEncoder):
id = "myId"
data = "myData"
def default(self, o):
print("here")
print ("Create instance")
obj = MyClass()
print("Serialize")
print(json.dumps(obj))
print ("and done")
私はPythonにはかなり新しいので、これは恐ろしいことです。