「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > `super()`をpythonコードを破壊するのはなぜですか?

`super()`をpythonコードを破壊するのはなぜですか?

2025-03-23に投稿されました
ブラウズ:481

 Why Does Rebinding `super()` Break Your Python Code?

super()がcode

がpython 3.xで壊れる理由は、スーパー()関数を引数なしで呼び出すことができます。この動作は、super()と呼び出しクラスの間の接続を確立するコンパイル時のマジックトリックによって有効になります。ただし、スーパー名が別の変数(例のスーパー_)にリバウンドされている場合、この接続は壊れています。 (自分自身を繰り返さないでください)原則。スーパークラスへの呼び出しで呼び出しクラスを明示的に命名することは、この原則に違反し、問題を再処理するリスクを高めます。さらに、クラス名を変更するクラスデコレータを使用すると、元のクラスオブジェクトへの参照も破壊します。セルは元のクラスオブジェクトを参照し、スーパー名がリバウンドであっても、スーパー()が常に正しいスーパークラスにアクセスできるようにします。コールの構文を簡素化し、無限の再帰の落とし穴を回避することにより、更新された実装はエラーを防ぐのに役立ちます。これは、セルがスーパーまたは

クラス

がメソッド内で使用されるときに作成されるためです。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3