<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programmation-Orientee-Objet | Dr. Goulu</title><link>https://drgoulu.com/tag/programmation-orientee-objet/</link><atom:link href="https://drgoulu.com/tag/programmation-orientee-objet/index.xml" rel="self" type="application/rss+xml"/><description>Programmation-Orientee-Objet</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Wed, 12 Jun 2019 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_8d57a97d564ea9bb.png</url><title>Programmation-Orientee-Objet</title><link>https://drgoulu.com/tag/programmation-orientee-objet/</link></image><item><title>Quelles sont les limitations des dataclasses de Python 3.7 comparé aux classes classiques de Python ?</title><link>https://drgoulu.com/2019/06/12/quelles-sont-les-limitations-des-dataclasses-de-python-3-7-compare-aux-classes-classiques-de-python/</link><pubDate>Wed, 12 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/12/quelles-sont-les-limitations-des-dataclasses-de-python-3-7-compare-aux-classes-classiques-de-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;les
sont des classes classiques additionnées de &amp;ldquo;décorateurs&amp;rdquo; qui génèrent automatiquement le code du constructeur et de diverses autres &amp;ldquo;méthodes magiques&amp;rdquo; comme &lt;strong&gt;str&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si vous ne connaissez pas la notion de décorateur, commencez par ça parce que c&amp;rsquo;est absolument génial, et très simple en python
. Et évidemment renseignez vous aussi sur les &amp;ldquo;méthodes magiques&amp;rdquo; si vous ne les connaissez pas.&lt;/p&gt;
&lt;p&gt;Après ça les choses seront claires : vous ne pouvez pas (simplement) écrire votre propre constructeur ou méthode magique d&amp;rsquo;une dataclasse. Par contre vous pouvez lui ajouter plein d&amp;rsquo;autres méthodes comme une classe normale.&lt;/p&gt;
&lt;p&gt;Notes de bas de page&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Qu'est-ce qu'une classe en Python ?</title><link>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</link><pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En première approximation, la même chose qu’une
dans n’importe quel autre langage.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Les classes sont un moyen de réunir des données et des fonctionnalités. Créer une nouvelle classe crée un nouveau &lt;em&gt;type&lt;/em&gt; d&amp;rsquo;objet et ainsi de nouvelles &lt;em&gt;instances&lt;/em&gt; de ce type peuvent être construites. Chaque instance peut avoir ses propres attributs, ce qui définit son état. Une instance peut aussi avoir des méthodes (définies par la classe de l&amp;rsquo;instance) pour modifier son état.
(
)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En deuxième approximation, c’est plus subtil et plus puissant :
, on peut définir des
, des
…&lt;/p&gt;</description></item><item><title>Pourquoi les objets intégrés mutables ne peuvent-ils pas être transformés en Python ? Quel est l'avantage de cela ?</title><link>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</link><pubDate>Mon, 06 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;qu’appelez-vous “transformés” ? Vous voulez dire modifiés comme&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a=(1,&amp;#39;truc&amp;#39;,true) # tuple
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a[1]=&amp;#39;machin&amp;#39; # erreur
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;? Alors vous voulez plutôt dire
(immutable en anglais).&lt;/p&gt;
&lt;p&gt;Un objet immutable permet de garantir la cohérence des données qu’il contient en obligeant à les manipuler comme un tout. Ca peut être utile en programmation multi-thread par exemple : chaque thread est sure que l’objet partagé n’est pas en train d’être modifié par une autre thread.&lt;/p&gt;
&lt;p&gt;Un autre avantage est que le hash d’un objet immuable est constant, ce qui permet la recherche très rapide d’un tel objet dans un set ou un dict. C’est pourquoi les clés de dict doivent être de type immuable&lt;/p&gt;</description></item><item><title>Est-il possible de créer des méthodes statiques en Python et de les appeler sans initialiser une classe, comme par exemple : ClassName.StaticMethod ()?</title><link>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;oui, ça se fait à l’aide du décorateur @staticmethod qui sert exactement à ça:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;class MyClass:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @staticmethod
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def staticmethod():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return &amp;#39;static method called&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;on peut ensuite appeler soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass().staticmethod(); # crée un objet, puis appelle sa méthode qui est statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass.staticmethod(); # appelle directement la méthode statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;les décorateurs, c’est absolument génialement fabuleusement puissant et simple&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item></channel></rss>