Python モンキー パッチはコア型メソッドに適用できますか?
Python では、モンキー パッチには、実行時の既存のクラスまたはオブジェクトの動作の変更が含まれます。ただし、Python では、int や float などのコア型の拡張は許可されていません。これにより、根本的な理由と潜在的な代替案について疑問が生じます。
主な違いは、Python のデータの不変性にあります。 C 拡張機能で定義されたすべての組み込みクラスとメソッドは不変であり、同じプロセス内のインタプリタ間でデータの整合性を確保します。このようなデータにモンキーパッチを適用すると、関係のないインタープリタに影響があり、予期しない動作が発生します。
対照的に、Python コードで定義されたクラスは、ローカル インタプリタ内に存在し、同じ不変性の問題が発生しないため、モンキーパッチを適用できます。したがって、Python では、モンキー パッチによるユーザー定義クラスの拡張が可能です。
たとえば、Item というユーザー定義クラスにモンキー パッチを適用して、テスト目的で should_equal というメソッドを含めることができます。これにより、テスト構文が合理化され、可読性が向上します。
<code class="python"># Before monkey patching assert_equal(item.price, 19.99) # After monkey patching item.price.should_equal(19.99)</code>
Python では Ruby のようなコア タイプのモンキー パッチは許可されていませんが、この手法を通じてユーザー定義のクラスを拡張し、特定のテストに対応する柔軟性が提供されます。読みやすさの要件。
以上がPython でコア タイプのメソッドにモンキー パッチを適用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。