問題タブ [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 - attrs はどのようにデバッガーをだまして自動生成コードにステップインさせますか?
attrsモジュールを使用するコードを調べています。その結果、一部のコードをステップ実行してデバッグすると、実際のファイルとして存在しないが自動生成されたソースが作成されます。
この質問は、この動作を実現するために使用される python 手法に関するものです。例に使用される実際のライブラリまたは例自体は、概念を示すための具体的なものです。
例
ライブラリをインストールする
動作を示すコード ( test.py
):
そのコードを実行してステップRawSerialPort
インすると、デバッガーは自動生成されたソースで自分自身を見つけます。
定義に注意してdef __init__
ください。実際のソース ファイルにはそのような定義は存在しませんが、 によって自動生成されattrs
ます。
私の質問は、デバッガーでさえだまされるこの動作を実現するために、ここでどのような python メカニズムが用意されているのですか?
python - 開始時に属性のデフォルトを設定するには?
Python attrs ライブラリを使用し、Settings オブジェクトにディレクトリ パスを設定しようとしています。これは、環境変数がシェル自体から設定されている場合にうまく機能します。しかし、シェルから TEST_TMPDIR が設定されておらず、Python コード自体に値を設定しようとすると、デフォルトは None に初期化されます。
以下のコードの例 デフォルトは None です。
コードは現在、環境変数がシェル レベルで設定されている場合にのみ機能します。そのため、端末で実行export TEST_TMPDIR="/tmp/"
してから Settings() を読み取ると機能します。
os.environ["TEST_TMPDIR"] を読み取っ__attrs_post_init__
てみましたが、Python コードで設定された値が返されます。
開始時にデフォルトが設定されない理由に関するリンクは役に立ちます。