


Types immuables ou mutables en Python : quand le sous-classement brise-t-il l'immuabilité ?
Types immuables et types mutables : une compréhension plus approfondie
La différence entre les types immuables et mutables peut être une source de confusion, surtout lorsqu'il s'agit à certaines classes qui héritent de types immuables.
Types immuables : inchangés par Conception
En Python, les types immuables sont des objets dont la valeur ne peut pas être modifiée sur place. Une fois créé, un objet immuable reste inchangé ; toute tentative de modification aboutit à un nouvel objet. Par exemple, l'objet float est immuable, ce qui signifie qu'il ne peut pas être modifié directement.
Sous-classement des types immuables : créer l'illusion de mutabilité
Cependant, il est possible de créer sous-classes de types immuables qui semblent mutables. Ceci est réalisé en remplaçant la méthode __new__. Par exemple, la classe RoundFloat est une sous-classe de float qui arrondit sa valeur à deux décimales :
class RoundFloat(float): def __new__(cls, val): return float.__new__(cls, round(val, 2))
Bien que ce code définisse une nouvelle classe qui hérite de float, l'objet RoundFloat reste immuable. En effet, la méthode __new__ crée simplement un nouvel objet float avec la valeur arrondie et ne modifie pas l'objet float d'origine.
Types mutables : modification à l'intérieur
En revanche, les types mutables permettent de modifier directement leurs valeurs. Les classes qui définissent des méthodes peuvent être considérées comme mutables. Par exemple, la classe SortedKeyDict hérite de dict et définit une méthode example() :
class SortedKeyDict_a(dict): def example(self): return self.keys()
Cette classe permet la modification de ses valeurs au sein des méthodes fournies. Cependant, il est important de noter que la classe SortedKeyDict elle-même est toujours immuable. Ses valeurs peuvent être modifiées, mais l'instance sous-jacente reste la même.
Comprendre la mutabilité en pratique
Pour mieux comprendre la différence entre les types immuables et mutables, considérez ce qui suit scénario. Passer l'ensemble d à la classe SortedKeyDict avec __new__ génère une erreur, tandis que le transmettre à la classe RoundFloat avec __new__ ne le fait pas.
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2)) SortedKeyDict.__new__(cls, d) # Error raised RoundFloat.__new__(cls, 12) # No error
Cela illustre que SortedKeyDict est mutable et RoundFloat est immuable. Étant donné que SortedKeyDict est mutable, il peut être modifié sur place dans ses méthodes. En revanche, RoundFloat est immuable, donc le passer à __new__ ne modifie pas l'objet d'origine.
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!

SlitingyPapyThonListIsDoneUsingTheSyntaxList [Démarrage: arrêt: étape] .He'showitworks: 1) startisheindexofthefirStelementoinclude.2) stopisTheIndexoftheFirstelementsoexclude.3) StepistheincrementBetweenselans.it'susefulfactingPortationSoListShsandCanusegeg

NumpyAllowsForvariousOperations ONARRAYS: 1) BasicarithmeticLikeaddition, Soustraction, Multiplication, anddivision; 2) AdvancedOperationSuchasmatrixMultiplication; 3) Element-Wiseoperations withoutExplicitloop

ArraySinpython, en particulier ThroughNumpyandPandas, aressentialfordataanalysis, offingspeeedAfficiency.1) numpyarrayablefficienthandlingoflargedatasetsandComplexOperationsLikEMoVingAverages.2)

ListsandNumpyArraysInpythonHaveDidifferentMemoryfootprints: listsaRemoreFlexibles Butlessmemory économe, tandis que la liste de résensés est-ce qui

ToenSurepythonscriptsBeHavecorrectlyAcrossDevelopment, mise en scène et production, catégories de type: 1) EnvironmentVariblesForsImplesettings, 2) ConfigurationFilesForComplexsetups et3) dynamicloadingforadaptability.eachMethodoffersNebeneFitsAndreCeresca

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
