English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Python

Contrôle de flux Python

Fonction en Python

Types de données en Python

Opérations sur les fichiers Python

Objets et classes Python

Dates et heures Python

Connaissances avancées Python

Manuel de référence Python

Classe et objet en Python

Dans cet article, vous apprendrez les fonctionnalités fondamentales de Python, les objets et les classes de Python. Vous apprendrez ce qu'est une classe, comment la créer et l'utiliser dans un programme.

Qu'est-ce que les classes et les objets en Python ?

Python est un langage de programmation orienté objet. Par rapport à la programmation procédurale qui met l'accent sur les fonctions, la programmation orientée objet met l'accent sur les objets.

Un objet est une collection de données (variables) et de méthodes (fonctions) agissant sur ces données. Et une classe est le plan d'un objet.

Nous pouvons considérer la classe comme un plan d'une maison (prototype). Il contient tous les détails concernant le plancher, les portes, les fenêtres, etc. Sur la base de ces descriptions, nous construisons des maisons. Les maisons sont des objets.

Comme il est possible de créer de nombreuses maisons avec une description, nous pouvons créer de nombreux objets à partir de la classe. Un objet est également appelé exemple de classe, et le processus de création de cet objet est appeléExemplification.

Définir une classe en Python

comme la définition de fonction utilise la clédefde même, en Python, nous utilisons la cléclassDéfini unClasse.

La première chaîne s'appelle docstring et contient une brève description de la classe. Bien que ce ne soit pas obligatoire, il est recommandé de le faire.

C'est une définition de classe simple.

class MyNewClass:
    '''Ceci est une chaîne de caractères documentaire. J'ai créé une nouvelle classe'''
    pass

Une classe crée un nouveau localNamespace,et dans laquelle on définit toutes ses propriétés. Les propriétés peuvent être des données ou des fonctions.

Parmi eux, il y a quelques propriétés spéciales, qui commencent par deux underscore (__). Par exemple, __doc__ nous donne la chaîne de caractères documentaire de la classe.

Une fois une classe définie, un nouveau objet de classe portant le même nom est créé. Cet objet de classe nous permet d'accéder à différentes propriétés et d'exemplifier de nouveaux objets de cette classe.

class MyClass:
	c'est mon deuxième classe
	a = 10
	def func(self):
		print('Hello')
# Sortie: 10
print(MyClass.a)
# Sortie: <function MyClass.func at 0x0000000003079BF8>
print(MyClass.func)
# Sortie: 'c'est mon deuxième classe'
print(MyClass.__doc__)

Lors de l'exécution du programme, la sortie est :

10
<function 0x7feaa932eae8="" at="" myclass.func="">
c'est mon deuxième classe

Créer un objet avec Python

Nous avons vu que les objets de classe peuvent être utilisés pour accéder à différentes propriétés.

Il peut également être utilisé pour créer de nouveaux exemples d'objets de cette classe (exemplification). Le processus de création d'un objet est similaire àFonctionAppel.

>>> ob = MyClass()

Cela créera un nouveau exemple d'objet ob. Nous pouvons utiliser le préfixe du nom de l'objet pour accéder aux propriétés de l'objet.

Les propriétés peuvent être des données ou des méthodes. Les méthodes de l'objet sont les fonctions correspondantes de la classe. Toute fonction objet utilisée comme propriété de la classe définit une méthode pour l'objet de cette classe.

Ce cela signifie que, puisque MyClass.func est un objet fonction (une propriété de la classe), ob.func deviendra un objet méthode.

class MyClass:
	c'est mon deuxième classe
	a = 10
	def func(self):
		print('Hello')
创建一个新的MyClass
ob = MyClass()
# Sortie: <function MyClass.func at 0x000000000335B0D0>
print(MyClass.func)
# Sortie: <bound method MyClass.func of <__main__.MyClass object at 0x000000000332DEF0>>
print(ob.func)
# Appel de la fonction func()
# Sortie: Hello
ob.func()

Vous avez peut-être remarqué le paramètre self dans la définition de la fonction interne de la classe, mais nous ne faisons que simplifier cette méthode en ob.func(), sansParamètres. Cela reste valide.

C'est parce que, à chaque fois que l'objet appelle sa méthode, l'objet lui-même est passé en tant que premier paramètre. Par conséquent, ob.func() se transforme automatiquement en MyClass.func(ob).

Généralement, appeler une méthode avec une liste de n paramètres est équivalent à appeler une fonction avec une liste de paramètres, créée en insérant l'objet de la méthode avant le premier paramètre.

Pour ces raisons, le premier paramètre des fonctions de la classe doit être l'objet lui-même. Cela s'appelle généralementself. Il peut y avoir d'autres noms, mais nous vous recommandons fortement de suivre les conventions.

Vous devez maintenant être familier avec les objets de classe, les objets d'exemple, les objets de fonction, les objets de méthode et leurs différences.

Constructeur en Python

Les fonctions de classe commençant par deux underscores (__ ) sont appelées fonctions spéciales car elles ont un sens spécial.

__init__() est particulièrement utile. Chaque fois qu'un nouveau objet de cette classe est instancié, cette fonction spéciale est appelée.

Ce type de fonction dans la programmation orientée objet (OOP) est également appelé constructeur. Nous l'utilisons généralement pour initialiser toutes les variables.

class ComplexNumber:
    def __init__(self, r = 0, i = 0):
        self.real = r
        self.imag = i
    def getData(self):
        print("{0}+{1}}.format(self.real, self.imag))
# Créer un autre objet ComplexNumber
c1 = ComplexNumber(2,3)
# Appeler la fonction getData()
# Sortie: 2+3j
c1.getData()
# Créer un autre objet ComplexNumber
# Créer une nouvelle propriété 'attr'
c2 = ComplexNumber(5)
c2.attr = 10
# Sortie: (5, 0, 10)
print((c2.real, c2.imag, c2.attr))
# Mais c1The object has no attribute 'attr'
# AttributeError: 'ComplexNumber' object has no attribute 'attr'
c1.attr

In the above example, we defined a new class to represent complex numbers. It has two functions, __init__() to initialize variables (default to zero), and getData() to display numbers correctly.

Something interesting to note in the above steps is that object attributes can be dynamically created. We created an attribute for object c2A new attribute attr was created and read, but this did not create an attribute for object c1Create this attribute.

Delete attributes and objects

You can use the del statement to delete any attribute of an object at any time. Try the following operation on the Python Shell to view the output.

>>> c1 = ComplexNumber(2,3)
>>> del c1.imag
>>> c1.getData()
Traceback (most recent call last):
...
AttributeError: 'ComplexNumber' object has no attribute 'imag'
>>> del ComplexNumber.getData
>>> c1.getData()
Traceback (most recent call last):
...
AttributeError: 'ComplexNumber' object has no attribute 'getData'

We can even use the del statement to delete the object itself.

>>> c1 = ComplexNumber(1,3)
>>> del c1
>>> c1
Traceback (most recent call last):
...
NameError: name 'c' is not defined1'is not defined

In fact, it is more complex than this. After completion, a new example object c will be created in memory1 = ComplexNumber(1,3) namec1bound to it.

Command del c1, it will delete this binding and remove the name from the corresponding namespacec1However, the object continues to exist in memory, and if there are no other name bindings, the object will be automatically destroyed later.

This automatic destruction of unreferenced objects in Python is also known as garbage collection.