2

各フィールドが明示的に設定されているかどうか、または またはdataclassによって入力されているかどうかを調べたい があります。defaultdefault_factory

を使用してすべてのフィールドを取得できることはわかってdataclasses.fields(...)います。これは、 を使用するフィールドではおそらく機能しますが、 を使用するフィールドでdefaultは簡単には機能しませんdefault_factory

私の最終目標は、2 つのデータクラス インスタンスABをマージすることです。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が明示的に設定されていることを検出したいと思います。

4

1 に答える 1