Python Monkey peut-il corriger les méthodes de type de base ?
En Python, le patching singe implique de modifier le comportement d'une classe ou d'un objet existant au moment de l'exécution. Cependant, l'extension des types de base comme les ints ou les floats n'est pas autorisée en Python. Cela soulève des questions sur les raisons sous-jacentes et les alternatives potentielles.
La principale différence réside dans l'immuabilité des données en Python. Toutes les classes et méthodes intégrées définies dans les extensions C sont immuables pour garantir l'intégrité des données entre les interpréteurs au sein du même processus. Le patching de ces données aurait un impact sur les interprètes non liés, conduisant à un comportement inattendu.
En revanche, les classes définies dans le code Python peuvent être patchées car elles résident dans l'interpréteur local et ne posent pas les mêmes problèmes d'immuabilité. Par conséquent, l'extension des classes définies par l'utilisateur via le patch singe est réalisable en Python.
Par exemple, une classe définie par l'utilisateur appelée Item peut être patchée par singe pour inclure une méthode appelée Should_equal à des fins de test. Cela peut améliorer la lisibilité en rationalisant la syntaxe de test :
<code class="python"># Before monkey patching assert_equal(item.price, 19.99) # After monkey patching item.price.should_equal(19.99)</code>
Bien que Python n'autorise pas l'application de correctifs singe aux types de base comme Ruby, il offre la flexibilité d'étendre les classes définies par l'utilisateur grâce à cette technique, pour répondre à des tests spécifiques. et exigences de lisibilité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!