Python 3.x のスーパー マジック: 謎を解く
Python 3.x では、super() メソッドに驚くべき工夫が導入されています。引数なしで呼び出します。この一見無害な変更は、内部に重大な結果と固有の魔法をもたらします。
魔法の発見
DRY 原則を維持するために、新しい super() 動作は明示的なクラスをバイパスします。ネーミング。これには、元のクラス オブジェクトを取得する特別な class セルがあり、以前のスーパー アプローチを悩ませていた再バインドの落とし穴を回避します。
魔法の結果
残念ながら、この魔法には欠点があります。 super() 名を super_ などの別の変数に再バインドすると、その機能が中断される可能性があります。これは、スーパーまたは クラス がメソッド内で参照される場合にのみセルが作成されるために発生します。
実際の落とし穴
この動作は、次のようなリスクを引き起こす可能性があります。疑いを持たないプログラマー:
Beyond Super()
興味深いことに、リバインドの問題の影響を受ける Python エンティティは super() だけではありません。その他の例としては、次のものが挙げられます。PyPy の RPython の
開発者への影響
super() の魔法は便利ですが、注意が必要です。その複雑さを理解することは、実行時エラーを防ぐのに役立ちます。再バインドを使用する場合、プログラマは class を明示的に参照するか、代替の super() 呼び出しメソッドを利用することを検討する必要があります。
以上がPython 3.x の Super() は引数なしでどのように動作するのでしょうか?また潜在的な落とし穴は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。