私は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 {}
が推奨されていないすべてのオブジェクトはevaluaになりますので、残念ながら
if isinstance(obj, object):
return {}
は動作しません。真としてted。
だからtype(obj) == type(object())
は唯一の方法ですか?あなたが本当にあなたのデータ構造にobject()
のインスタンスを持っている場合
あなたは 'object'インスタンスをテストする必要があると思うのはなぜ? ** Python 3のすべての**は、 'object'の(サブクラス)のインスタンスです。あなたのデータに実際の 'object()'インスタンスがありますか?そうした場合、なぜですか? –
そして、クラスをテストする通常の方法は 'isinstance(obj、class)'を使うことですが、もう一度 'object'クラスのためにすべてです。 'type(obj)is object'を使ってサブクラスを禁止することができます。私はなぜあなたがこれを必要とするのか困惑しています。代わりに 'True'や専用クラスを使うのではないでしょうか? –
@MartijnPieters、なぜなら、私はobject()に影響を与えてしまったので、これをdictとしてrepr(インスタンス属性)する必要があるからです。 –