


Introduction pour savoir si les restrictions d'accès Python sont privées ou publiques (avec exemples)
Cet article vous explique si les restrictions d'accès Python sont privées ou publiques (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. Points de connaissances
Dans un module, on peut définir de nombreuses fonctions et variables. Mais nous espérons que certaines fonctions et variables pourront être utilisées par d'autres, et certaines fonctions et variables que nous espérons utiliser uniquement à l'intérieur du module, alors ?
Nous pouvons atteindre cet objectif en définissant si la fonction et la variable sont publiques ou privées.
En Python, ceci est réalisé grâce au préfixe de soulignement "_".
public : public. Les noms normaux de fonctions et de variables sont de ce type et peuvent être référencés directement. Par exemple, les variables abc, PI, etc. ;
Variables spéciales : Le format est __xxx__, commençant par __ et se terminant par __. Peut être référencé directement, mais a des utilisations particulières. Par exemple, __author__ et __name__ sont des variables spéciales. De manière générale, n'utilisez pas ce type de nom de variable pour les variables que vous définissez vous-même.
privé : privé, non public, format similaire à _xxx_ et __xxx, tel que __num.
ne doit pas être référencé directement, il n'est accessible qu'en interne, pas en externe.
L'état interne de l'objet ne peut pas être modifié à volonté, le code est donc plus robuste grâce à la protection des restrictions d'accès.
2. Exemple
À l'intérieur de la classe Class, il peut y avoir des attributs et des méthodes. Le code externe peut manipuler les données en appelant directement la méthode de variable d'instance, masquant ainsi la logique complexe interne. Cependant, le code externe est toujours libre de modifier les propriétés d'une instance. Par exemple :
>>>b.score 99 >>>b.score = 59 >>>b.score 59
Si vous souhaitez empêcher l'accès aux attributs internes par le monde extérieur, vous pouvez ajouter deux traits de soulignement "__" avant le nom de l'attribut pour en faire une variable privée, comme suit :
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name, self.__score))
Lorsque vous essayez d'accéder aux propriétés de l'extérieur, vous constaterez qu'une erreur sera signalée car les variables privées ne sont pas accessibles de l'extérieur.
>>> bart = Student('Bart Simpson', 98) >>> bart.__name # 私有变量:不能被外部访问 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Student' object has no attribute '__name'
Mais que se passe-t-il si le code externe veut obtenir le nom et le score ?
Ajoutez des méthodes pour obtenir des attributs dans la classe Student : get_name() et get_score(), comme suit :
class Student(object): ... def get_name(self): return self.__name def get_score(self): return self.__score
Et si un code externe modifie le score ? Vous pouvez ajouter des méthodes de paramétrage à la classe Student : set_score()
:
... def set_score(self, score): # 避免传入无效参数 if 0 <= score <= 100: self.__score = score else: raise ValueError('bad score')
Ensuite, les variables d'instance privées commençant par un double trait de soulignement ne doivent-elles pas être accessibles de l'extérieur ? Pas vraiment.
Vous ne pouvez pas accéder directement à __name car l'interpréteur Python modifie en externe la variable __name en _Student__name, vous pouvez donc toujours accéder à la variable __name via _Student__name.
>>> bart = Student('Bart Simpson', 98) >>> bart.get_name() 'Bart Simpson' >>> bart.__name = 'New Name' # 给bart新增的__name变量 >>> bart.__name # !与class内部的__name变量不是一个变量! 'New Name' >>> bart.get_name() # get_name()内部返回self.__name (_Student__name) 'Bart Simpson'
En apparence, le code externe définit "avec succès" la variable __name, mais en fait cette variable __name et la variable __name à l'intérieur de la classe ne sont pas la même variable ! La variable interne __name a été automatiquement remplacée par _Student__name par l'interpréteur Python, et le code externe ajoute une nouvelle variable __name à Bart.
Python n'a donc pas de moyen de restreindre complètement l'accès aux fonctions ou variables privées, il ne "ne peut donc pas être directement référencé". D'après les habitudes de programmation, les fonctions ou variables privées ne doivent pas être référencées. Quelle est leur utilité ?
Par exemple :
def _private_1 (name): return 'hello,%s ' % name def _private_2 (name): return 'hi , %s ' % name def greeting(name): if len(name) > 3: return _private_1 (name) else: return _private_2 (name)
expose la fonction Greeting() dans le module, mais masque la logique interne avec une fonction privée. De cette façon, appeler la fonction Greeting() n'a pas besoin de se soucier des détails de la fonction privée interne.
Il s'agit d'une méthode très utile d'encapsulation et d'abstraction de code, c'est-à-dire : toutes les fonctions qui n'ont pas besoin d'être référencées de l'extérieur sont définies comme privées, et seules les fonctions qui doivent être référencées de l'extérieur sont définies comme publiques. .
3. Code complet
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name, self.__score)) def get_name(self): return self.__name def get_score(self): return self.__score def set_score(self, score): # 避免传入无效参数 if 0 <= score <= 100: self.__score = score else: raise ValueError('bad score') def _private_1 (name): return 'hello,%s ' % name def _private_2 (name): return 'hi , %s ' % name def greeting(name): if len(name) > 3: return _private_1 (name) else: return _private_2 (name)
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!

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

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

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

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

En tant que professionnel des données, vous devez traiter de grandes quantités de données provenant de diverses sources. Cela peut poser des défis à la gestion et à l'analyse des données. Heureusement, deux services AWS peuvent aider: AWS Glue et Amazon Athena.

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Question: Comment afficher la version Redis Server? Utilisez l'outil de ligne de commande redis-Cli --version pour afficher la version du serveur connecté. Utilisez la commande Info Server pour afficher la version interne du serveur et devez analyser et retourner des informations. Dans un environnement de cluster, vérifiez la cohérence de la version de chaque nœud et peut être vérifiée automatiquement à l'aide de scripts. Utilisez des scripts pour automatiser les versions de visualisation, telles que la connexion avec les scripts Python et les informations d'impression.

La sécurité du mot de passe de Navicat repose sur la combinaison de cryptage symétrique, de force de mot de passe et de mesures de sécurité. Des mesures spécifiques incluent: l'utilisation de connexions SSL (à condition que le serveur de base de données prenne en charge et configure correctement le certificat), à la mise à jour régulièrement de NAVICAT, en utilisant des méthodes plus sécurisées (telles que les tunnels SSH), en restreignant les droits d'accès et, surtout, à ne jamais enregistrer de mots de passe.
