Il n'y a pas de variables d'instance «privées» en Python qui ne sont accessibles qu'à partir d'un objet.

Je l'ai vérifié car il y avait plusieurs choses

python


# -*- coding: utf-8 -*-

class Hoge(object):

    def __init__(self):

        self.__foo = 'foo'
        self._bar = 'bar'


hoge = Hoge()

# AttributeError: 'Hoge' object has no attribute '__foo'
# print hoge.__foo

print hoge._bar
print hoge._Hoge__foo

print hoge.__dict__

Résultat d'exécution

bar foo {'_Hoge__foo': 'foo', '_bar': 'bar'}

En quelque sorte, Hoge .__ foo est une propriété de type privé. On dit que la propriété avec deux unscos se comportera comme private car la mandaring de nom est effectuée.

Il semble que masquer des variables ne soit pas l'objectif principal, donc je vais le mettre dans ma tête pour le moment.

Gardez à l'esprit que les règles de difficulté sont avant tout de prévenir les accidents, il est toujours possible d'accéder et de modifier de manière convaincante des variables considérées comme privées. est. Cette spécification est même utile dans des situations spéciales telles que les débogueurs.

http://docs.python.jp/2/tutorial/classes.html#tut-private

Recommended Posts

Il n'y a pas de variables d'instance «privées» en Python qui ne sont accessibles qu'à partir d'un objet.
Mettre en place un serveur FTP qui peut être créé et détruit immédiatement (en Python)
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python
[Python] Il semble que les variables globales ne puissent pas être référencées en multitraitement
Résumé de l'entrée standard de Python pouvant être utilisée dans Competition Pro
Il n'y a pas de commutateur en python
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique