Orienté objet en python

Orienté objet en Python

Trois éléments majeurs de l'orientation des objets

Encapsulation

Il s'agit de combiner les données et les opérations associées en un seul objet, et de fournir une divulgation d'informations et des opérations minimales à l'extérieur. Parmi les variables et fonctions d'un objet, les données qui n'ont pas besoin d'être référencées directement de l'extérieur et les opérations non utilisées doivent être protégées et masquées. Protéger signifie ne pas utiliser ou réécrire en dehors de cette classe. Cela maintient un couplage lâche entre les programmes et facilite la maintenance. De plus, il est possible de rendre difficile la génération d'erreurs telles que différents types et la protection des données. Ceci est particulièrement important lors de la construction de systèmes à grande échelle.

Polymorphisme (diversité)

Cela signifie que la même fonction ou variable peut se comporter différemment selon le type de données. Si vous créez une méthode qui correspond au type, le programme sera très long.

Héritage

Il s'agit de prendre en charge les membres et les méthodes d'une classe et de créer une nouvelle classe enfant. En héritant, les parties communes peuvent être réutilisées ensemble. Il existe un type particulier d'héritage, à savoir les deux héritages suivants.

Classe abstraite

Les classes abstraites ne peuvent pas être instanciées et ne fonctionneront comme un programme que si elles sont héritées. Les classes abstraites vous permettent d'implémenter des méthodes et de déclarer des méthodes abstraites. La méthode abstraite déclarée doit être implémentée dans la destination d'héritage.

interface

Aucun programme n'est écrit ici, seule la méthode est déclarée. La classe héritée doit implémenter cette méthode. De plus, l'héritage normal et l'héritage de classe abstraite ne permettent pas l'héritage de plusieurs classes, mais les interfaces peuvent effectuer plusieurs héritages. En séparant l'interface, vous pouvez choisir d'hériter ou non de la pièce.

Différence entre classe abstraite et interface

Les classes abstraites peuvent implémenter des méthodes. L'interface peut être héritée de plusieurs fois. Une autre façon de voir les choses est que la classe abstraite est interne et l'interface est externe. Lors de l'héritage d'une classe abstraite, elle y est souvent complétée, et lors de l'héritage d'une interface, l'instance est souvent utilisée en externe.

En python

Encapsulation

En Python, toutes les variables et méthodes sont publiques, elles se distinguent donc par un soulignement_. Les variables et méthodes avec un trait de soulignement au début sont traitées comme privées.


Class ClassName():
    def __init__(self):
        self.public_variable = ‘safe’
        self._private_variable = ‘unsafe’

    def public_method():
        pass

    def _private_method():
        pass

Classe abstraite

En python, la classe de base abstraite (ABC) est utilisée.


class BaseClassName(metaclass=ABCMeta):
    
    @abstractmethod
    def abst_method_name(self):
        pass
    
    def method_name(self):
        print(self.name)

Spécifiez ABCMeta comme classe méta et ajoutez un décorateur appelé @abstractmethod à la définition de la méthode abstraite. Cela garantit que la classe héritée remplace abst_method_name.

interface

Puisque python n'a pas d'interface en standard et que l'héritage multiple est possible, vous ne pouvez faire que quelque chose comme une interface. Si vous voulez faire quelque chose comme ça, définissez la classe abstraite ci-dessus sans implémentation.

Recommended Posts

Orienté objet en python
Méthodes d'objet chaîne en Python
Comparaison d'objets nuls en Python
Quadtree en Python --2
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Objet intégré Python
Méta-analyse en Python
Unittest en Python
Discord en Python
DCI en Python
tri rapide en python
nCr en python
Objet intégré Python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Lire DXF avec python
Daily AtCoder # 53 en Python
Séquence de touches en Python
Utilisez config.ini avec Python
Daily AtCoder # 33 en Python