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__()