各フィールドが明示的に設定されているかどうか、または またはdataclassによって入力されているかどうかを調べたい があります。defaultdefault_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が明示的に設定されていることを検出したいと思います。