1.7. L’orienté objet en Python¶
La programmation orientée objet repose sur des principes bien établis (notions de classes, d’instances, de méthodes, etc.) mais leur mise en œuvre diffère d’un langage à l’autre. Nous terminons ce chapitre avec quelques informations complémentaires sur la manière dont Python met en œuvre le concept même d’objet et permet d’en tirer parti pour le développement d’applications bien conçues.
1.7.1. Tout est objet en Python¶
Le concept de la programmation orientée objet, qui repose sur l’utilisation d’objets comme approche de résolution des problèmes, est si ancré dans la philosophie de Python qu’en réalité tout y est objet. Les types de données élémentaires sont des objets, ainsi les fonctions, et même les méthodes et attributs des objets qui sont eux aussi des objets avec leur propre type.
>>> type(0) # remarquez le mot class qui apparaît devant le type
<class 'int'>
>>> type(print) # on fait référence à l'objet print, sans les parenthèses de l'appel de fonction
<class 'builtin_function_or_method'>
>>> def f(x): # simple fonction `f(x) = x**2`
... return x**2
...
>>> type(f)
<class 'function'>
1.7.2. Héritage de classes préexistantes¶
Puisqu’en Python tout est objet, cela signifie que nous pouvons créer nos propres classes qui héritent de celles préexistantes dans le langage (ou d’autres classes importées de modules externes) pour y ajouter nos fonctionnalités et les adapter à nos besoins précis.
Voici un exemple de classe héritant de int
et qui implémente une méthode inverse()
.
class inversible_int(int):
def __init__(self, x):
int.__init__(x)
def inverse(self):
return 1/self
n = inversible_int(4)
print(f"n = {n}")
print(n ** 3)
print(n.inverse())
n = 4
64
0.25