Les données se Cachant dans Python Classe

Je sais que les attributs de la classe qui sont déclarées par un double soulignement __ préfixe peut ou peut ne pas être visible à l'extérieur de la définition de la classe. Comme on peut toujours accéder à ces attributs par object._className__attrName.

class A:
    def __init__(self):
        self.a = 1
        self.b = 2
        ----
        ----
        self.z = 26
        self.catch = 100

Maintenant pour protéger tous les attributs à l'exception de l'attribut catch, je dois les déclarer avec double underscore qui est assez salissant. Est-il possible que je peux dire, dans ma définition de la classe que seulement self.catch peut être consulté à l'extérieur de la classe?

Excuses si cela est répondu quelque part d'autre ou discuté plus tôt.

Pas de. Toutefois, sauf si vous êtes vraiment paranoïaque, le fait que quelqu'un accéder à un objet à l'aide de object._className__attrName n'est pas une grosse affaire. Vraiment vous voulez juste pour empêcher les gens d'accéder accidentellement à des variables qu'ils ne devraient pas lors de l'utilisation de votre code. L'obscurcissement atteint cet objectif.
double possible de python ont des "privés" des variables dans les classes?
ce n'est pas ce qu'il demande. Il veut la nécessité expresse de "public", "opérateur", et non l'inverse.
Avez-vous vraiment besoin de double underscore? Pourquoi ne pas simplement utiliser le plus simple standard trait de soulignement self._a?

OriginalL'auteur Aamir Adnan | 2012-01-26