Maison >développement back-end >Tutoriel Python >## Pouvez-vous améliorer les types intégrés de Python avec des méthodes et des attributs personnalisés ?

## Pouvez-vous améliorer les types intégrés de Python avec des méthodes et des attributs personnalisés ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 02:56:30638parcourir

## Can You Enhance Python's Built-in Types with Custom Methods and Attributes?

Des méthodes et attributs personnalisés peuvent-ils être ajoutés aux types Python intégrés ?

En Python, il n'est pas possible de modifier directement les types construits. -dans des types de données tels que des dicts. Cependant, une technique connue sous le nom de « patching singe » permet de créer et de remplacer une sous-classe dans l'espace de noms global. Cela fournit une version améliorée du type de données d'origine.

Technique de patching Monkey

  1. Créez une sous-classe qui étend le type de données d'origine, en ajoutant les méthodes ou les attributs souhaités. .
  2. Remplacez le type d'origine par la sous-classe dans l'espace de noms intégré à l'aide de __builtin__.

Exemple : ajout d'une méthode first_last() à str

<code class="python"># Built-in namespace
import __builtin__

# Extended subclass
class mystr(str):
    def first_last(self):
        if self:
            return self[0] + self[-1]
        else:
            return ''

# Substitute the original str with the subclass on the built-in namespace    
__builtin__.str = mystr

print(str(1234).first_last())  # Output: 14
print(str(0).first_last())  # Output: 00
print(str('').first_last())  # Output: ''</code>

Limitations :

Cette technique comporte quelques mises en garde :

  • Les objets créés avec une syntaxe littérale (par exemple, « 0 ») pas les méthodes/attributs ajoutés.
  • La version originale du type est perdue et ne peut pas être restaurée facilement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn