26- orienté objet - Encapsulé

I. Introduction Paquet

La programmation orientée objet a trois caractéristiques: encapsulation, héritage, polymorphisme, la caractéristique la plus importante est le package. Package fait référence aux données et fonctions sont intégrées ensemble, ne semble pas très familier, oui, nous l'avons dit « intégré », le mot est en fait un paquet d'argument populaire. En outre, pour le package à un attributs d'objet ou de classe, nous pouvons contrôler strictement l'accès, réalisé en deux étapes: les interfaces cachées et ouvertes

  • L'encapsulation est une caractéristique des caractéristiques orientées objet du noyau trois
  • Paquet <---> Intégration

 

 

En second lieu, l'attribut caché

2.1 Comment cacher

Avant que le nom de la propriété avec le préfixe __ mettra en œuvre un attribut caché l'effet de l'étranger
 Le problème caché a besoin d'attention:

I: ne peux pas accéder à la ligne de propriété au début de la double baisse directement en dehors de la classe, mais connaissant le nom de la classe et le nom de la propriété peut épeler le nom:

_ __ nom de la classe d'attribut, vous pouvez visiter, comme Foo._A__N, de sorte que cette opération ne limite pas l' accès externe sur le terrain au sens strict, juste une déformation du sens grammatical.

classe Foo:
     __x = 1   # _Foo__x 

    def  __f1 (auto):   # _Foo__f1 
        print ( ' de l' essai ' ) 


# print (Foo de dict__) 
# impression (Foo._Foo__x) 
# impression (Foo._Foo__f1)

II: Ce caché dans le mauvais externe, parce que les propriétés commenceront par __ déformation uniforme se produit lorsque le type de corps syntaxe du code de vérification:

classe Foo:
     __x = 1   # _Foo__x = 1 

    def  __f1 (self):   # _Foo__f1 
        print ( ' de l' essai ' ) 

    def f2 (auto):
         impression (. auto __x ) # impression (self._Foo__x) 
        impression (. auto __f1 ) # impression (self._Foo__f1) 

impression (Foo. __x )
 impression (Foo. __f1 ) 
obj = Foo () 
obj.f2 ()

III: Cette opération de déformation se produit uniquement lorsque la grammaire vérification d'un membre de la classe, __ après le début des définitions d'attributs ne sont pas déformés

 

classe Foo:
     __x = 1   # _Foo__x = 1 

    def  __f1 (self):   # _Foo__f1 
        print ( ' de l' essai ' ) 

    def f2 (auto):
         impression (. auto __x ) # impression (self._Foo__x) 
        impression (. auto __f1 ) # print (self._Foo__f1) 

Foo. __y = 3
 impression (Foo. __dict__ )
 impression (Foo. __y ) 

classe Foo:
     __x = 1   #_Foo__x = 1 

    def  __init__ (self, nom, âge): 
        auto. __name = nom 
        auto. __age = âge 

obj = Foo ( ' egon ' , 18 )
 impression (obj. __dict__ )
 impression (obj.name, obj.age)

 

 

2.2 Pourquoi voulez-vous cacher

I, attribut de données caché « caché classe de données limites fonctionnement externe directement sur les données, l'interface devrait fournir la classe autorisée des données de fonctionnement externes indirects, l'interface peut être fixé sur la logique supplémentaire aux données exploitation strictement contrôlée:

# Designer: Egon 
classe populaire:
     DEF  de (auto, nom): 
        Soi. __NAME__ = nom 

    DEF get_name (Self):
         # peut accéder indirectement au nom de la propriété via l'interface 
        # Imprimer ( 'petite poubelle, ne pas voir' ) 
        Imprimer (auto. __name__ ) 

    DEF set_name (auto, Val):
         IF du type (Val) EST  pas str:
             Imprimer ( ' petite poubelle, doit passer un type de chaîne ' )
             retour 
        auto. __name__ = Val 

# utilisateurs: Wang Peng
Les gens = obj ( ' Egon ' )
 # Imprimer (obj.name) # ne peut pas directement le nom de l' attribut 
# obj.set_name ( 'EGON') 
obj.set_name (123123123 ) 
obj.get_name ()

II, cachant des attributs de fonction / méthode: le but est d'isoler la complexité

 

 

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/zhubincheng/p/12663209.html
conseillé
Classement