各フィールドが明示的に設定されているかどうか、または またはdataclass
によって入力されているかどうかを調べたい があります。default
default_factory
を使用してすべてのフィールドを取得できることはわかってdataclasses.fields(...)
います。これは、 を使用するフィールドではおそらく機能しますが、 を使用するフィールドでdefault
は簡単には機能しませんdefault_factory
。
私の最終目標は、2 つのデータクラス インスタンスAとBをマージすることです。Bは、 Aがデフォルト値を使用しているA のフィールドのみをオーバーライドする必要があります。
ユースケースは、複数の場所で指定できる構成オブジェクトであり、一部の場所は他の場所よりも優先度が高くなります。
編集:例
from dataclasses import dataclass, field
def bar():
return "bar"
@dataclass
class Configuration:
foo: str = field(default_factory=bar)
conf1 = Configuration(
)
conf2 = Configuration(
foo="foo"
)
conf3 = Configuration(
foo="bar"
)
conf1.foo
デフォルト値を使用していて、conf2.foo
&conf3.foo
が明示的に設定されていることを検出したいと思います。