====== Programmation Python Orientée Objet ====== FIXME : en construction ===== Concepts utilisés ===== * Un objet : c'est... n'importe quoi, qui peut être codé. En Python, tout est objet ! * Une classe est une description générique d'un type d'objet, incluant les données et les méthodes qui le caractérisent * Convention : on écrit les noms de classe en "CamelCase" * Une instance d'une classe, c'est un objet individuel bien précis, avec son identifiant, et toutes les propriétés liées à la classe à laquelle il appartient. * Convention : les noms des instances commencent par une lettre en bas de casse (minuscule) * Méthode : les objets peuvent évoluer par la réalisation de méthodes, qui sont des fonctions associées à des objets, pouvant accéder à leurs données. Comme toute fonction, les méthodes peuvent passer des arguments et renvoyer des valeurs * Encapsulation : [[https://fr.wikipedia.org/wiki/Encapsulation_(programmation)]] * Héritage : ... * Abstraction * Polymorphisme #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Introduction to object-oriented programming in Python Led with number and status attributes """ class Led: def __init__(self, number, status): self.number = number self.status = status def on(self): self.status = 'on' def off(self): self.status = 'off' led1 = Led(1, 'on') print(led1) print(type(led1)) print(type(Led)) print(led1.number) print(led1.status) ===== Références ===== * [[https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet]] * UML : * [[https://fr.wikipedia.org/wiki/UML_(informatique)]] * [[http://argouml.tigris.org/]] * Vulgarisation * [[https://towardsdatascience.com/how-i-explain-oop-to-a-data-scientist-in-5-minutes-44faf72ecca7|How I Explain OOP to a Data Scientist in 5 Minutes]] * [[https://levelup.gitconnected.com/all-the-basics-of-python-classes-8b07046d2a52|All the basics of Python classes - Everything you need to know about Python classes!]] George Seif, Medium, 25/09/2019 * [[https://towardsdatascience.com/the-most-important-python-concept-that-you-need-to-understand-985b98bbb84|Python Objects and Classes: The Most Important Python Concepts That You Need to Understand]], Erik van Baaren, Medium, 13/07/2020 * [[https://towardsdatascience.com/object-oriented-programming-in-python-what-and-why-d966e9e0fd03|Object Oriented Programming in Python — What and Why? | by Arafath Hossain | Mar, 2022 | Towards Data Science]] * [[https://towardsdatascience.com/oop-in-python-understanding-a-class-bcc088e595c6|OOP in Python - Understanding a Class | by Arafath Hossain | Mar, 2022 | Towards Data Science]] * [[https://towardsdatascience.com/object-oriented-programming-in-python-understanding-variable-e451cf581368|Object Oriented Programming in Python — Understanding Variables | by Arafath Hossain | Mar, 2022 | Towards Data Science]] * [[https://towardsdatascience.com/object-oriented-programming-in-python-inheritance-and-subclass-9c62ad027278|Object Oriented Programming in Python — Inheritance and Subclass | by Arafath Hossain | Mar, 2022 | Towards Data Science]] * Alternatives * [[https://betterprogramming.pub/6-alternatives-to-classes-in-python-6ecb7206377|6 Alternatives to Classes in Python]] Martin Thoma, Medium, Mars 2021 * Simplifications : * [[https://docs.python.org/3/library/dataclasses.html|Dataclasses]] * [[https://python.plainenglish.io/create-data-classes-in-python-64d6d84ebe7a|Create Data Classes in Python - This library will save you hours of coding]] Matteo, medium, 09/09/2021 * [[https://itnext.io/effortlessly-create-classes-in-python-with-dataclass-19412eada8be|Effortlessly Create Classes in Python with @dataclass]] Jacob Ferus, ITNEXT (Medium), 21/01/2023