Grammaire de base Python (divers) Mémo (4)

2.7 base. Il est indispensable que vous connaissiez une autre langue.

Relation

Modules et classes

from import Déclaration "Utiliser la classe Decimal du module standard appelé decimal"

>>> from decimal import Decimal

Importer toutes les classes
>>> d = Decimal(10)
>>> print d
10

>>> print d + 3  #Classe décimale+Possède une méthode correspondant à l'opérateur
13

Pour plus d'informations sur Decimal http://docs.python.jp/2/library/decimal.html

Définition de classe

>>> class MyClass:
...	    pass
...
>>> mc = MyClass()
>>> print mc
<__main__.MyClass instance at 0x1076245a8>

Les noms de classe sont généralement écrits dans des cas de chameaux. pass est une opération nulle et ne fait rien.

attribut

Python n'a pas la capacité d'écrire des définitions de variable membre avec des définitions de classe. Les attributs (membres de données) sont définis pour chaque instance en les affectant à des variables séparées par des points pour l'instance générée.

>>> mc = MyClass()
>>> mc.value = 10
>>> print(mc.value)
10

>>> mc2 = MyClass()
>>> print mc2.value
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute 'value'

Définition de la méthode et \ __ init__

\ Init (et \ __ new__) est fourni comme une méthode d'initialisation de type constructeur.

class MyClass:
    #Méthode d'initialisation
    def __init__(self):
        self.h = 'hoge'   #Ajouter des attributs
        
    #Méthode
    def print_h(self):
        print h
        
mc = MyClass()
mc.print_h()  # => 'hoge'

L'objet d'instance lui-même est passé au premier argument, self. Il est de coutume d'utiliser soi-même, mais cela et moi travaillons aussi. Si vous voulez donner des variables à l'initialisation

class Rect:
    def __init__(self, width, height):
        self.width = width
        self.height = height
        
    def area(self):
        return self.width * self.height
        
r = Rect(100, 50)
print r.height  # => 50
print r.area    # => 5000

devenir de cette façon. Notez que l'appelant de la méthode d'initialisation ignore le premier argument. Si vous vous oubliez dans l'argument,

>>> class MyClass():
...     def hoge():
...         print 'hoge'
...
>>> mc = MyClass()
>>> mc.hoge()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: hoge() takes no arguments (1 given)

Entraînera l'erreur.

Encapsulation

Il n'y a pas de mots-clés privés en python, et si vous souhaitez masquer un attribut ou un nom de méthode, ajoutez un trait de soulignement (un ou deux) devant lui.

def _private_method():
    # ....
    
def __secret_method():
    # ....

Dans un cas, il est d'usage d'exprimer l'intention de "ne pas appeler de l'extérieur", et dans les deux cas, le nom est automatiquement changé en interne pour le rendre impossible à appeler de l'extérieur.

class MyClass:
    def __init__(self, size):
        self._size = size
        self.__size = size

mc = MyClass(100)
print mc._size    # => 100
print mc.__size   # => AttributeError

Héritage de classe

Python prend en charge ** l'héritage multiple **. Vous pouvez également créer de nouvelles classes en héritant de types intégrés tels que des nombres et des chaînes.

Définition

classe (nom de la super classe [, super classe 2, super classe 3 ,,]):

Il semble que le comportement soit légèrement différent lorsque la classe héritée n'est pas spécifiée et lorsque l'objet est hérité. Il est recommandé d'hériter d'un objet s'il n'hérite de rien (?).

Dans Python3, il semble que l'objet sera hérité par défaut si la classe parent n'est pas spécifiée.

class C1(): 
    pass
print dir(C1) #=> ['__doc__', '__module__']

class C2(object): 
    pass
print dir(C2) #=> ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__']

Remplacer et super

class Rectangle(object):
    def __init__(self, w, h):
        self.w = w
        self.h = h
        self.color = 'red'
  
    def area(self):
        return self.w * self.h
      
      
class Square(Rectangle):     
    #Redéfinir (remplacer) la méthode d'initialisation
    def __init__(self, length):
        self.w = self.h = length

s = Square(100)
print s.area()   #=>10000, appel de méthode de classe parent

Les remplacements de méthode sont des remplacements complets et n'appellent pas automatiquement le constructeur parent. Ainsi, par exemple, la variable color initialisée par la classe parent \ init () ci-dessus n'existe pas dans l'instance de la classe Square. Pour éviter cela, appelez la méthode parent avec super (),

class Square(Rectangle):
    def __init__(self, length):
        super(Square, self).__init__(length, length)

Je dois l'appeler maladroit. Identifiez la classe parent en passant votre type et votre auto. En outre, à ce stade, si la classe parente n'hérite pas de la classe d'objet, une erreur se produit.

En Python3, il semble que vous puissiez obtenir une super classe avec juste super ().

Recommended Posts

Grammaire de base Python (divers) Mémo (3)
Grammaire de base Python (divers) Mémo (2)
Grammaire de base Python (divers) Mémo (4)
Grammaire de base Python (divers)
Mémo de grammaire de base Python
Mémo de grammaire de base Python (1)
Grammaire de base Python3
Mémo de base Python - Partie 2
Notes de commande de base Python
Mémo de base Python - Partie 1
Grammaire de base du système Python3 (quelques itérations de Python)
Installation de Python et grammaire de base
Grammaire de base Python pour les débutants
Installation de Python (Python 3.7.7) et grammaire de base
Mémo Python
mémo python
Mémo Python
Mémo Python
Mémo Python
Comparaison de la grammaire de base entre Java et Python
Grammaire de base du système Python3 (dictionnaire)
[Python] Mémo sur le dictionnaire
RF Python Basic_01
mémo débutant python (9.2-10)
vérification de la grammaire python
mémo débutant python (9.1)
Mémo de base Flask
Écriture de base Python
★ Mémo ★ Python Iroha
[Grammaire de base] Différences entre Ruby / Python / PHP
[Python] Mémo EDA
Mémo opérateur Python 3
Notes de grammaire Python
[Python] J'ai personnellement résumé la grammaire de base.
Grammaire de base de la série Python3 (chaîne de caractères)
Grammaire de base de la série Python3 (liste, tapple)
[Mon mémo] python
Mémo de métaclasse Python3
RF Python Basic_02
[Python] Mémo de fond de carte
Grammaire de base du système Python3 (notation incluse)
Mémo débutant Python (2)
[Python] Mémo Numpy
Mémo n ° 3 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 1 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 2 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 7 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 6 pour les débutants Python à lire "Explication détaillée de la grammaire Python"
Mémo n ° 5 que les débutants Python lisent "Explication détaillée de la grammaire Python"
[Go] Grammaire de base ① Définition
Cours de base Python (12 fonctions)
Édition de base Python Memo
Classe Python (mémo d'apprentissage Python ⑦)
Cours de base Python (7 dictionnaire)
installation de python openCV (mémo)