{"id":2370,"date":"2020-04-15T10:49:52","date_gmt":"2020-04-15T08:49:52","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=2370"},"modified":"2020-05-10T16:32:36","modified_gmt":"2020-05-10T14:32:36","slug":"la-programmation-orientee-objet","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=2370","title":{"rendered":"La programmation orient\u00e9e objet"},"content":{"rendered":"\n<h1 style=\"text-align: center;\"><strong>(classes et objets)<\/strong><\/h1>\n\n\n\n<h6>&nbsp;<\/h6>\n<h6><span style=\"color: #999999;\"><br>(<em>Cliquez pour afficher la version PDF)<\/em><\/span><\/h6>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/scriptspython5.pdf\">La programmation orient\u00e9e objet<\/a><a href=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/scriptspython5.pdf\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p><br><br>La programmation orient\u00e9e objet (ou POO en abr\u00e9g\u00e9) est une autre mani\u00e8re de construire et d\u2019organiser son code.<\/p>\n<p>Python est un langage orient\u00e9 objet, ce qui signifie que le langage tout entier est construit autour de la notion d\u2019objets.<\/p>\n<p>Par exemple, les types <strong>str<\/strong>, <strong>int<\/strong>, <strong>list<\/strong>,&#8230; sont des objets, les fonctions sont des objets, etc\u2026<\/p>\n<p>La programmation orient\u00e9e objet repose sur le concept d\u2019objets qui sont des blocs de code qui poss\u00e8de un ensemble de variables (appel\u00e9es <strong>attributs <\/strong>en python) et de fonctions qui leur sont propres (appel\u00e9es <strong>m\u00e9thodes <\/strong>en python).<\/p>\n<p>Les objets sont cr\u00e9\u00e9s \u00e0 partir de \u2033mod\u00e8les\u2033 appel\u00e9s <strong>classes <\/strong>qui sont \u00e9galement des ensembles de codes qui contiennent des variables et des fonctions. Les objets cr\u00e9\u00e9s poss\u00e8dent alors un m\u00eame ensemble d\u2019attributs et de m\u00e9thodes que les classes, les attributs \u00e9tant des variables accessibles depuis toute m\u00e9thode de la classe o\u00f9 elles sont d\u00e9finies.<\/p>\n<p><strong>On dit qu\u2019un objet est une instance d\u2019une classe. On peut cr\u00e9er autant d&rsquo;objets que l&rsquo;on d\u00e9sire avec une classe.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #0000ff;\"><strong>. <u>Les classes<\/u><\/strong><\/span><\/h4>\n<p>Une classe est \u00e9quivalente \u00e0 un type de donn\u00e9es et cr\u00e9er une nouvelle classe en Python correspond \u00e0 d\u00e9finir un nouveau type de donn\u00e9es.<\/p>\n<p>Sans le savoir, nous avons d\u00e9j\u00e0 vu des classes&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">&#8211; le type de donn\u00e9e <strong>str <\/strong>est une classe dont l\u2019objet <strong>ch =&nbsp;\u2033chaine&nbsp;\u2033 <\/strong>est une instance et par exemple, la fonction <strong>upper()<\/strong> est une de ses m\u00e9thodes,<\/p>\n<p style=\"padding-left: 40px;\">&#8211; le type de donn\u00e9e <strong>list<\/strong> est une classe dont l\u2019objet <strong>liste=[1,2,3,4]<\/strong> est une instance et par exemple, la fonction <strong>sort()<\/strong> est une de ses m\u00e9thodes,<\/p>\n<p style=\"padding-left: 40px;\">&#8211; \u2026<\/p>\n<p>Pour cr\u00e9er une nouvelle classe Python, on utilise le mot clef <strong>class<\/strong> suivi du nom de la classe.<\/p>\n<p>Nous allons cr\u00e9er une classe nomm\u00e9e <strong>inventaire<\/strong> \u00e0 partir du programme d\u2019inventaire d\u00e9j\u00e0 vu en tant qu\u2019exemple d\u2019application de la manipulation des fichiers.<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px; padding-left: 40px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2382\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass1.png\" alt=\"\" width=\"224\" height=\"82\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p><br>Les instructions ci-dessus cr\u00e9e une classe nomm\u00e9e <strong>inventaire <\/strong>dont les attributs sont&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">. un dictionnaire nomm\u00e9 <strong>self.invent<\/strong> initialement vide,<\/p>\n<p style=\"padding-left: 40px;\">. une chaine de caract\u00e8res nomm\u00e9e <strong>self.inventpath<\/strong> correspondant au chemin de l\u2019inventaire initialement vide,<\/p>\n<p style=\"padding-left: 40px;\">. une variable bool\u00e9enne nomm\u00e9e <strong>self.finprog<\/strong> initialis\u00e9e en <strong>False <\/strong>afin de pouvoir mettre fin \u00e0 l\u2019ex\u00e9cution du programme.<br><br><\/p>\n<p>La m\u00e9thode <strong>_init_(self)<\/strong> dans laquelle les attributs sont d\u00e9finis est appel\u00e9e lors de la cr\u00e9ation d&rsquo;un objet \u00e0 partir de la classe. Cette m\u00e9thode est nomm\u00e9e un <strong>constructeur<\/strong>.<\/p>\n<p>Pour cr\u00e9er un objet \u00e0 partir de la classe <strong>inventaire<\/strong>, il suffira dans le programme principal d\u2019appeler la classe&nbsp;\u00e0 l\u2019aide de l\u2019instruction&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>nom_objet = inventaire()<br><br><\/strong><\/p>\n<p>La m\u00e9thode <strong>_init_(self) <\/strong>est alors appel\u00e9e et les variables du constructeur sont attribu\u00e9es \u00e0 l\u2019objet cr\u00e9\u00e9.<\/p>\n<p>La m\u00e9thode prend en param\u00e8tre la variable <strong>self<\/strong>. Cette variable repr\u00e9sente l\u2019objet lui-m\u00eame (d\u2019o\u00f9 le nom <strong>self<\/strong>\u2026) et c\u2019est pourquoi les attributs sont de type&nbsp;: <strong>self.variable <\/strong>(car ce sont les variables de l\u2019objet&nbsp;!).<\/p>\n<p>De cette fa\u00e7on, il n\u2019y a plus besoin de <strong>variables globales<\/strong> dans des fonctions du programme ayant besoin de modifier des variables externes \u00e0 la fonction (les attributs <strong>self.variable <\/strong>\u00e9tant des variables accessibles depuis toute m\u00e9thode de la classe).<br><br><\/p>\n<p>Apr\u00e8s la d\u00e9finition des attributs, il faut d\u00e9finir les m\u00e9thodes&nbsp;de la classe <strong>inventaire <\/strong>:<\/p>\n<p>&#8211; M\u00e9thode pour ouvrir un inventaire&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2385\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass2-300x86.png\" alt=\"\" width=\"607\" height=\"174\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass2-300x86.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass2.png 631w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode demande \u00e0 l\u2019utilisateur le chemin d\u2019un fichier d\u2019inventaire (<strong>self.InventPath<\/strong>) et tente de l\u2019ouvrir. Un message est affich\u00e9 si le fichier n\u2019existe pas, sinon l\u2019inventaire est charg\u00e9 dans le dictionnaire <strong>self.invent<\/strong>.<\/p>\n<p><br>&#8211; M\u00e9thode pour ajouter un \u00e9l\u00e9ment \u00e0 l\u2019inventaire&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2387\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass3-300x34.png\" alt=\"\" width=\"632\" height=\"72\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass3-300x34.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass3.png 650w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode demande \u00e0 l\u2019utilisateur de saisir les donn\u00e9es (nom et quantit\u00e9) de l\u2019\u00e9l\u00e9ment \u00e0 ajouter \u00e0 l\u2019inventaire et l\u2019ajoute au dictionnaire<strong> self.invent<\/strong>.<\/p>\n<p><br>&#8211; M\u00e9thode pour effacer un \u00e9l\u00e9ment de l\u2019inventaire&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2389\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass4-300x49.png\" alt=\"\" width=\"617\" height=\"101\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass4-300x49.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass4.png 643w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode demande \u00e0 l\u2019utilisateur de saisir le nom de l\u2019\u00e9l\u00e9ment \u00e0 supprimer de l\u2019inventaire et le supprime du dictionnaire<strong> self.invent<\/strong>.<\/p>\n<p><br>&#8211; M\u00e9thode pour afficher l\u2019inventaire :<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2390\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass5-300x26.png\" alt=\"\" width=\"692\" height=\"60\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass5-300x26.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass5.png 647w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode affiche la liste des \u00e9l\u00e9ments de l\u2019inventaire <strong>self.invent<\/strong> dans la fen\u00eatre Python shell.<\/p>\n<p><br>&#8211; M\u00e9thode pour sauvegarder l\u2019inventaire&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2391\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass6-300x48.png\" alt=\"\" width=\"844\" height=\"135\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass6-300x48.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass6.png 648w\" sizes=\"auto, (max-width: 844px) 100vw, 844px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode demande \u00e0 l\u2019utilisateur de saisir le chemin d\u2019enregistrement de l\u2019inventaire (<strong>self.InventPath<\/strong>). L\u2019inventaire est parcouru et sauvegarder dans le fichier ouvert.<\/p>\n<p><br>&#8211; M\u00e9thode pour d\u00e9terminer l\u2019action \u00e0 ex\u00e9cuter&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 70px;\">\n<tbody>\n<tr style=\"height: 70px;\">\n<td style=\"height: 70px; width: 100%;\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-2407\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass7-1-300x177.png\" alt=\"\" width=\"575\" height=\"339\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass7-1-300x177.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass7-1.png 649w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>Cette m\u00e9thode affiche la liste des actions disponibles et demande en boucle \u00e0 l\u2019utilisateur de faire un choix.<\/p>\n<p><br>Les attributs et les m\u00e9thodes de la classe <strong>inventaire<\/strong> ont maintenant tous \u00e9t\u00e9 d\u00e9finis. Le programme va cr\u00e9er un objet nomm\u00e9 <strong>mon_inventaire<\/strong> qui est une instance de la classe <strong>inventaire<\/strong>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>mon_inventaire=inventaire()<\/strong><\/p>\n<p>Puis on appelle la m\u00e9thode <strong>ActionChoix()<\/strong> de l\u2019objet cr\u00e9\u00e9 pour lancer la boucle des actions&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>mon_inventaire.ChoixAction()<\/strong><\/p>\n<p><u><br>R\u00e9sultats dans le fen\u00eatre Python Shell<\/u>&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"685\" height=\"596\" class=\"wp-image-2396 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass9.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass9.png 685w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass9-300x261.png 300w\" sizes=\"auto, (max-width: 685px) 100vw, 685px\" \/><\/figure>\n<\/div>\n<p><br>Voici Le programme complet avec la classe <strong>inventaire<\/strong> qui pourra bien-s\u00fbr se situ\u00e9 dans un module \u00e0 part qui le cas \u00e9ch\u00e9ant devra \u00eatre import\u00e9 avant utilisation&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/python\/class\/inventclass.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2402 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass10-1-611x1024.png\" alt=\"\" width=\"809\" height=\"1356\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass10-1-611x1024.png 611w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass10-1-179x300.png 179w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/pythonclass10-1.png 683w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p><strong>Tout ce qui a \u00e9t\u00e9 vu concernant la programmation en Python ne repr\u00e9sente que des bases, mais cela va nous permettre d\u2019aborder le th\u00e8me suivant \u00e0 savoir la communication entre un Arduino Uno et un programme Python \u00e0 des fins de contr\u00f4le et d\u2019exploitation de donn\u00e9es.<\/strong><\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2324\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=269\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>(classes et objets) &nbsp; (Cliquez pour afficher la version PDF) La programmation orient\u00e9e objet (ou POO en abr\u00e9g\u00e9) est une autre mani\u00e8re de construire et d\u2019organiser son code. Python est un langage orient\u00e9 objet, ce qui signifie que le langage tout entier est construit autour de la notion d\u2019objets. Par exemple, les types str, int, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2370","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2370"}],"version-history":[{"count":0,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2370\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}