Programmation orientée objet¶
Comment créer se propres objets en Python.
Vocabulaire¶
En python tout ce que l’on manipule est un objet :
Nombre, liste, dictionnaire, …
Tableau numpy
Fonction, module, ….
Un objet possède des attributs. Exemple :
z = 1.1J
z.real
a = np.array([1, 2, 4])
a.shape
Un objet possède des méthodes. Exemple :
a.mean()
a.conjugate()
z.conjugate()
Les méthodes sont des fonctions attachées à l’objet. La méthode conjugate d’un tableau n’est pas la même fonction que la méthode conjugate d’un complexe.
Comment créer un objet¶
Créer un object vecteur¶
Attributs d’objet et de class¶
Les classes sont des objets comme les autres. Elles ont des attributs. Ce sont tous les objets définis dans la classe. Si un objet ne possède pas l’attribut auquel ou souhaite accéder, c’est l’attribut de la classe qui est renvoyée si celui ci existe.
Les méthodes sont des fonctions qui sont des attributs de la classe. C’est lorsque l’on accède à cette attribut par l’objet, une transformation se passe et Python rajoute automatiquement l’objet comme premier argument.
Instance et héritage¶
L’héritage est un mécanisme qui permet, lors de la déclaration d’une nouvelle classe, d’y inclure les caractéristiques d’une autre classe.
Un objet est une instance de sa classe. On peut le tester avec la méthode
isinstance
. Il est aussi une instance de toutes les classes dont hérite sa classe.L’utilsation de classes permet d’écrire des méthodes ayant le même nom, mais différentes pour chaque objet. La fonction volume_prisme fonctionne pour tout type de FormeGeometrique possédant une méthode surface.
Méthodes spéciales¶
__init__
__repr__
,__str__
Lorsque c’est possible,
__repr__
doit représenter au mieux l’objet. Souvent il s’agit d’une chaine de caractère qui en étant évaluée renvoie un objet similaire. La méthode__str__
renvoie__repr__
par défaut. Sinon, elle doit être plus simple.Opérateur unaire et binaire
__neg__
__add__
,__sub__
,__mul__
,__truediv__
,__mod__
,__pow__
__radd__
, …__eq__
(==),__ne__
(!=),__lt__
(<),__le__
(<=),__gt__
,__ge__
__or__
(|),__and__
(&),__xor__
(^)Emulateur de contenu
a[key] =>
a.__getitem__(key)
a[key] = val =>
a.__setitem__(key, val)
del a[key] =>
a.__delitem__(key)
len(a) =>
a.__len__()
for elm in a =>
for elm in a.__iter__()