Ce "soulignement" semble se produire beaucoup, et je me demandais si c'était une exigence dans le langage Python, ou simplement une question de convention?
De plus, quelqu'un pourrait-il nommer et expliquer quelles fonctions ont tendance à être soulignées et pourquoi ( __init__
par exemple)?
python
function
methods
double-underscore
Chuck testa
la source
la source
Réponses:
À partir de Python PEP 8 - Guide de style pour le code Python :
Notez que les noms avec des soulignements doubles en tête et en fin sont essentiellement réservés à Python lui-même: "N'inventez jamais de tels noms; utilisez-les uniquement comme indiqué".
la source
__double_leading_underscore
est toujours public , la variable est simplement renommée pour éviter un conflit.Les autres répondants ont raison de décrire les doubles soulignements de début et de fin comme une convention de dénomination pour les méthodes "spéciales" ou "magiques".
Bien que vous puissiez appeler ces méthodes directement (
[10, 20].__len__()
par exemple), la présence des traits de soulignement indique que ces méthodes sont destinées à être invoquées indirectement (len([10, 20])
par exemple). La plupart des opérateurs python ont une méthode "magique" associée (par exemple,a[x]
est la manière habituelle d'invoquera.__getitem__(x)
).la source
Les noms entourés de doubles soulignements sont "spéciaux" pour Python. Ils sont répertoriés dans la Référence du langage Python, section 3, «Modèle de données» .
la source
En fait, j'utilise des noms de méthode _ lorsque j'ai besoin de faire la différence entre les noms de classe parent et enfant. J'ai lu quelques codes qui utilisaient cette façon de créer des classes parent-enfant. À titre d'exemple, je peux fournir ce code:
...
et l'enfant qui a une méthode _worker
...
la source
Cette convention est utilisée pour les variables ou méthodes spéciales (dites «méthode magique») telles que
__init__
et__len__
. Ces méthodes fournissent des fonctionnalités syntaxiques spéciales ou font des choses spéciales.Par exemple,
__file__
indique l'emplacement du fichier Python,__eq__
est exécuté lorsque l'a == b
expression est exécutée.Un utilisateur peut bien sûr créer une méthode spéciale personnalisée, ce qui est un cas très rare, mais peut souvent modifier certaines des méthodes spéciales intégrées (par exemple, vous devez initialiser la classe avec
__init__
celle qui sera exécutée au début lorsqu'une instance d'une classe est créé).la source
Ajout d'un exemple pour comprendre l'utilisation de __ en python. Voici la liste de tous __
https://docs.python.org/3/genindex-all.html#_
Restriction d'accès à l'aide de __
la source