問題タブ [python-attrs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - attr.ib() のデフォルト値のモック
次のような状況があります
すべてのクラスとテストは異なるファイルにあり、モッカーは pytest_mock によって提供されるフィクスチャであり、クリーンアップを簡単に処理する unittest.mock の単なるラッパーです。
私が遭遇した問題は、単体テストを実行しているときに、test_var がパッチ関数から MagicMock として正しく割り当てられていることです。したがって、 test_var.some_func() が返された場合、すべて問題ありません。
がself._prop.some_func()
呼び出されるとNotImplementedException
、パッチがこれに影響を与えていないように見えるため、 が発生します。
私の単体テストでは、設定できsut._prop = MagicMock()
ましたが、これは内部実装の詳細であり、脆弱なテストになっています。
これを回避するために、属性のデフォルト変数をどのようにモックするのですか?
python-attrs - クラス属性ではない __init__ 引数を指定する方法
attrs を使用して、クラス属性ではないinit引数を指定するにはどうすればよいですか。
たとえば、CRC8 オブジェクトはコンストラクターでいくつかのバイトまたは bytearray を渡される可能性がありますが、その入力を保存したくありません。CRC を計算して結果を保存するだけです。
このパターンは、(このリンクで説明されているように) クラス メソッドの使用が適切な例ですか?
python - タプルとディクテーションのアンパックを使用して、追加のメソッドを使用せずに attrs クラスを作成する方法
かなり洗練された Python 用のモジュールを使い始めたところattrs
です (または、同様に Python 3.7 DataClasses を使用することもできます)。私が持っている一般的な使用パターンは、クラスがパラメーター値のコンテナーになることです。パラメータを割り当てるときのラベル付けと、値を参照するよりクリーンな属性スタイルが気に入っていますが、順序付けられた dict のようなものに値を格納するときに便利な機能がいくつかあることも気に入っています。
*
tuple
aまたは a のようにアンパックlist
して関数の引数にフィードする**
キーワードの受け渡しが必要または望ましい場合の解凍。
クラスに 3 つのメソッドを追加することで、これらすべてを実現できます。
次に、次のようにクラスを使用できます。
ここでの動機は、データクラスが利便性と明快さを提供することです。しかし、私が書いているモジュールがデータ クラスの使用を必要としない理由があります。関数呼び出しが複雑なデータクラスではなく、単純な引数を受け入れることが望ましいです。
上記のコードは問題ありませんが、パターンが非常に明確であるため、関数の記述をまったくスキップできる何かが欠けているかどうか疑問に思っています。属性は、アンパックしたい順序で追加され、キーワード引数の属性名に基づいてキーと値のペアとして読み取ることができます。
多分これは次のようなものです:
attrs
しかし、私が見つけていないこれを行う何かがそれ自体にあるかどうかはわかりません。また、属性が追加されたときに属性の順序を維持し、それをキーメソッド自体に変換する方法がわかりません。
pycharm - attrsを使用したサブクラスのPycharm typehint
Pycharm は MyClass インスタンスへの予期しない引数について不平を言っています。これを回避する方法はありますか?