Python 3.x のスーパー マジック: 謎を解く
Python 3.x では、super() メソッドに驚くべき工夫が導入されました。引数なしで呼び出します。この一見無害な変更は、内部に重大な結果と固有の魔法をもたらします。
魔法の発見
DRY 原則を維持するために、新しい super() 動作は明示的なクラスをバイパスします。ネーミング。これには、元のクラス オブジェクトを取得する特別な class セルがあり、以前のスーパー アプローチを悩ませていた再バインドの落とし穴を回避します。
魔法の結果
残念ながら、この魔法には欠点があります。 super() 名を super_ などの別の変数に再バインドすると、その機能が中断される可能性があります。これは、セルがメソッド内で super または class が参照された場合にのみ作成されるために発生します。
実際的な落とし穴
この動作により、次のようなリスクが生じる可能性があります。疑いを持たないプログラマ:
Beyond Super()
興味深いことに、リバインドの問題の影響を受ける Python エンティティは super() だけではありません。その他の例としては、PyPy の RPython の
開発者への影響
] super() の魔法は便利ですが、注意が必要です。その複雑さを理解することは、実行時エラーを防ぐのに役立ちます。再バインドを使用する場合、プログラマは class を明示的に参照するか、代替の super() 呼び出しメソッドを利用することを検討する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3