Python ont “privé” des variables dans les classes?

Je suis venant du monde Java et la lecture de Bruce Eckels' Python 3 Modèles, des Recettes et des expressions idiomatiques.

Lors de la lecture sur les classes, c'est-à-dire qu'en Python il n'est pas nécessaire de déclarer les variables d'instance. Vous venez de les utiliser dans le constructeur, et boum, ils sont là.

Ainsi, par exemple:

class Simple:
    def __init__(self, s):
        print("inside the simple constructor")
        self.s = s

    def show(self):
        print(self.s)

    def showMsg(self, msg):
        print(msg + ':', self.show())

Si cela est vrai, alors tout objet de la classe Simple suffit de modifier la valeur de la variable s à l'extérieur de la classe.

Par exemple:

if __name__ == "__main__":
    x = Simple("constructor argument")
    x.s = "test15" # this changes the value
    x.show()
    x.showMsg("A message")

En Java, nous avons appris à propos de public/privé/protégé variables. Ces mots-clés, parce que parfois vous voulez des variables dans une classe à laquelle personne n'en dehors de la classe a accès.

Pourquoi n'est-ce pas nécessaire en Python?

  • Vous vouliez dire, les variables d'instance, pas de variables de classe, non?
  • Vous devriez vérifier les propriétés: docs.python.org/library/functions.html#property. Utilisez simplement la lecture et de votre variable sera protégé.
InformationsquelleAutor Omnipresent | 2009-10-29