問題タブ [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 - __init__ でのユーザー クラスのデフォルト/空の属性の設定
私はまともなレベルのプログラミングをしており、ここのコミュニティから多くの価値を得ています。しかし、私はプログラミングのアカデミックな指導を受けたことも、本当に経験豊富なプログラマーの隣で働いたこともありません。その結果、私は「ベストプラクティス」に苦労することがあります。
私はこの質問のより良い場所を見つけることができず、この種の質問を嫌う可能性のある炎上者にもかかわらず、これを投稿しています. これがあなたを動揺させたらごめんなさい。私はただ学ぼうとしているだけで、あなたを怒らせるつもりはありません。
質問:
新しいクラスを作成するとき、すべてのインスタンス属性を に設定する必要__init__
がNone
ありますか?実際には後でクラス メソッドに値が割り当てられますか?
results
の属性については、以下の例を参照してくださいMyClass
。
私は他のプロジェクトで、クラス属性がクラスメソッドにのみ表示され、多くのことが行われている場合、クラス属性が埋もれてしまう可能性があることを発見しました。
では、経験豊富なプロのプログラマーにとって、これに対する標準的な方法は何でしょうか? 読みやすくするために、すべてのインスタンス属性を定義します__init__
か?
そして、そのような原則を見つけることができる資料へのリンクを誰かが持っている場合は、それらを回答に入れてください。私はPEP-8について知っており、上記の質問をすでに数回検索しましたが、これに触れている人を見つけることができません。
ありがとう
アンディ
python - 属性を持つ PyTorch モジュールがパラメーター リストを取得できない
attr のパッケージは、モジュールに対する pytorch のparameter()
メソッドを何らかの形で台無しにします。2 つのパッケージをシームレスに統合できるように、誰かが回避策や解決策を持っているかどうか疑問に思っていますか?
そうでない場合、問題を投稿する github に関するアドバイスはありますか? 私の本能はこれを attr の github に投稿することですが、スタック トレースは pytorch のコードベースにほぼ完全に関連しています。
実際の出力は次のとおりです。
予想される出力は次のとおりです。
python - attrs ライブラリとスーパー
これは、リファクタリングしたいクラスのおもちゃの例です。実際には、運動量などのパラメーター/属性がはるかに多いため、多くのコードの繰り返しがあります。
繰り返しを避けるための解決策を探し始めましたが、attrs
ライブラリが適しているようです。features
、momentum
および継承に問題はありません。残念ながら、私が試したような構造の例は見つかりませんでしsuper(TransformBl, self).__init__(**kwargs)
た__init__
がsuper()
、私は得ましたRuntimeError: super(): no arguments
attrs
このクラスをスタイリッシュに書き直す方法はありますか?
python - attr.ib は値パラメーターを無視します
attr.ib
repr
bool または callableの引数を取ります。
属性値のフォーマット方法をオーバーライドするには、単一の値を取り、文字列を返す callable を渡します。結果の文字列はそのまま使用されることに注意してください。つまり、呼び出しの代わりに直接使用され
repr()
ます (デフォルト)。
渡すときはそうではないようdatetime.datetime.fromisoformat()
です:
結果:
期待される:
実際、どのパラメータも無視されているようです。attr docs の例を少し変更したものを次に示します。
ここで何が欠けていますか?