{"id":81379,"date":"2022-07-28T11:09:44","date_gmt":"2022-07-28T09:09:44","guid":{"rendered":"https:\/\/keepcoding.io\/?p=81379"},"modified":"2024-04-10T15:01:18","modified_gmt":"2024-04-10T13:01:18","slug":"definir-una-clase-cryptocontroller-con-python","status":"publish","type":"post","link":"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/","title":{"rendered":"C\u00f3mo definir una clase CryptoController con Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Definir una clase CryptoController con <a href=\"https:\/\/keepcoding.io\/blog\/que-es-input-en-python-y-como-usarlo\/\">Python<\/a> es otra de las labores que deber\u00e1s cumplir cuando est\u00e9s realizando un programa para registrar los valores de intercambios de monedas del mercado mundial y criptomonedas como el Bitcoin. Este es un<strong> <a href=\"https:\/\/keepcoding.io\/blog\/definir-metodo-exchange-para-programa-de-cripto\/\" data-type=\"post\" data-id=\"81031\">ejercicio pr\u00e1ctico<\/a> de CoinAPI.io <\/strong>que hemos estado realizando en los art\u00edculos de KeepCoding, por lo que, si te interesa el tema, no dudes en revisarlos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ahora, nos centraremos en el proceso <strong>para definir una clase CryptoController con Python.<\/strong> <\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u00bfQu\u00e9 encontrar\u00e1s en este post?<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Fichero_controllerpy_para_programa_exchange_de_monedas\" >Fichero controller.py para programa exchange de monedas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Como_definir_una_clase_CryptoController_con_Python\" >C\u00f3mo definir una clase CryptoController con Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Importar_ficheros\" >Importar ficheros<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Definir_clase_CryptoController\" >Definir clase CryptoController<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Definir_clase_CryptoController_con_la_libreria_Tk\" >Definir clase CryptoController con la librer\u00eda Tk<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Representacion_de_los_pasos_para_definir_una_clase_CryptoController_con_Python\" >Representaci\u00f3n de los pasos para definir una clase CryptoController con Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/#Aprende_mas_sobre_Python\" >Aprende m\u00e1s sobre Python<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fichero_controllerpy_para_programa_exchange_de_monedas\"><\/span>Fichero controller.py para programa exchange de monedas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El fichero controller.py se encarga de controlar y coordinar cada una de las acciones que realizan el resto de ficheros y objetos del programa de c\u00f3digo. Se tomar\u00e1n en cuenta los objetos que se instancien en las <strong>clases de <em>view<\/em> y <em>model<\/em>.<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si quieres saber m\u00e1s acerca de c\u00f3mo funciona la <a href=\"https:\/\/keepcoding.io\/blog\/que-es-la-programacion-y-para-que-sirve\/\">programaci\u00f3n<\/a> de una aplicaci\u00f3n de escritorio que registra el <em>exchange<\/em> de monedas, puedes <a href=\"https:\/\/keepcoding.io\/blog-adriana-botelho\/aprender\/\">aprender<\/a> sobre ello en nuestro art\u00edculo acerca de <a href=\"https:\/\/keepcoding.io\/blog\/desarrollo-de-una-app-para-exchange-de-monedas\/#Controlador\" data-type=\"URL\" data-id=\"https:\/\/keepcoding.io\/blog\/desarrollo-de-una-app-para-exchange-de-monedas\/#Controlador\">c\u00f3mo funciona el desarrollo de la app<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_definir_una_clase_CryptoController_con_Python\"><\/span>C\u00f3mo definir una clase CryptoController con Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Importar_ficheros\"><\/span><strong><em>Importar ficheros<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Como la clase Crypto Controller se encarga de controlar y enlazar los dem\u00e1s ficheros del programa para registrar los intercambios de valor de las monedas, tienes que importarlos al fichero del controlador. Esto lo haces con la funci\u00f3n <em>from import<\/em>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Definir_clase_CryptoController\"><\/span><strong><em>Definir clase CryptoController<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para empezar a definir la clase CryptoController debes instanciar la vista y el modelo del programa como objetos de la misma clase, es decir, <strong>self.vista y self.modelo<\/strong>. Despu\u00e9s de haber establecido el constructor de la clase, podr\u00e1s a\u00f1adir la cantidad de m\u00e9todos que requieras. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En un prinicipio, vamos a definir un m\u00e9todo que funcione como un bucle, al que llamaremos <strong>vamos_alla<\/strong>. Aqu\u00ed tendremos que pedirle al fichero vista la acci\u00f3n de pedir las monedas y el m\u00e9todo de <em>exchange<\/em> que se estableci\u00f3 en otro fichero. Para salir, presentaremos un <em>input<\/em>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Definir_clase_CryptoController_con_la_libreria_Tk\"><\/span><em><strong>Definir clase CryptoController<\/strong> <strong>con la librer\u00eda Tk<\/strong><\/em><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez definida la clase, tendr\u00e1s que crear una herencia de ella con la <a href=\"https:\/\/docs.python.org\/es\/3\/library\/tkinter.html\" data-type=\"URL\" data-id=\"https:\/\/docs.python.org\/es\/3\/library\/tkinter.html\" target=\"_blank\" rel=\"noopener\">librer\u00eda Tk<\/a> con el m\u00e9todo super para crear esta clase como una ventana, que deber\u00e1 tener un t\u00edtulo. <strong>Tambi\u00e9n una instancia de la clase vista y la clase modelo.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed como en la anterior definici\u00f3n, deber\u00e1s agregar m\u00e9todos que sean capaces de ejecutar las acciones del modelo. Este ser\u00e1 el m\u00e9todo calcular cambio con las variables de obtener moneda origen y destino, as\u00ed como el resultado. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Representacion_de_los_pasos_para_definir_una_clase_CryptoController_con_Python\"><\/span>Representaci\u00f3n de los pasos para definir una clase CryptoController con Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, te traemos una representaci\u00f3n en forma de c\u00f3digo de los pasos para definir una clase CryptoController con Python:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>#importar el resto de ficheros<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from criptocambio.models import CryptoModel<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from criptocambio.views import CryptoView<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>#definir clase CryptoController<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def __init__ (self)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#instancia vista y modelo<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">self.vista = CryptoView( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">self.modelo = CryptoModel( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#definir m\u00e9todo<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def vamos_alla (self):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">salir = \u00abn\u00bb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">while salir != &#8216;n&#8217;:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          desde, hasta = self.vista.pedir_monedas( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          self.modelo.moneda_origen = desde<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          self.modelo.moneda_destino = hasta<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          self.modelo.exchange( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          #vista, mostrar resultado<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          self.vista.mostrar (desde, hasta, self.modelo.cambio)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">          salir = input (\u00ab\u00bfQuieres cambiar algo m\u00e1s? (s \/ n): \u00ab).lower()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>#definir clase CryptoController con librer\u00eda TK<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class CryptoControllerTk (Tk):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def __init__ (self):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      super() .__init__()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.title = \u00abCalcula cambio de divisas\u00bb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      #instancia vista y modelo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.vista = CryptoViewTk (self, self.calcular_cambio)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.modelo = CryptoModel( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def vamos_alla (self):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self.mainloop()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def calcular_cambio (self):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.modelo.moneda_origen = self.vista.moneda_origen( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.modelo.moneda_destino = self.vista.moneda_destino( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.modelo.exchange( )<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      self.vista.mostrar_valor (self.modelo.valor)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De esta manera, ya conoces el proceso para definir una clase CryptoController con Python y puedes reproducirla en tu problema de c\u00f3digo. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Aprende_mas_sobre_Python\"><\/span>Aprende m\u00e1s sobre Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si bien ya sabes c\u00f3mo definir una clase CryptoController con Python, hay muchas m\u00e1s herramientas que deber\u00edas conocer para trabajar con <strong>APIs y con plataformas o servicios de la web<\/strong>, por eso creemos que es tan importante que te adentres en el mundo del aprendizaje. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una gran forma de hacerlo es matricularte en nuestro <a href=\"https:\/\/bootcamp.keepcoding.io\/mobile-descargar-temario?utm_campaign=Bootcamp%20Mobile&amp;utm_source=blogkc&amp;utm_medium=blogkc&amp;utm_term=blogkc&amp;utm_content=blogkc\">Aprende a Programar desde Cero Full Stack Jr. Bootcamp<\/a>, ya que es una formaci\u00f3n intensiva que se fundamenta en la bases del c\u00f3digo para explicar programas mucho m\u00e1s complejos. <strong>\u00a1An\u00edmate y convi\u00e9rtete en un <a href=\"https:\/\/keepcoding.io\/blog\/que-es-un-programador-informatico\/\">programador<\/a> profesional!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Definir una clase CryptoController con Python es otra de las labores que deber\u00e1s cumplir cuando est\u00e9s realizando un programa para registrar los valores de intercambios de monedas del mercado mundial y criptomonedas como el Bitcoin. Este es un ejercicio pr\u00e1ctico de CoinAPI.io que hemos estado realizando en los art\u00edculos de KeepCoding, por lo que, si &#8230; <a title=\"C\u00f3mo definir una clase CryptoController con Python\" class=\"read-more\" href=\"https:\/\/keepcoding.io\/blog\/definir-una-clase-cryptocontroller-con-python\/\" aria-label=\"Leer m\u00e1s sobre C\u00f3mo definir una clase CryptoController con Python\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":4,"featured_media":81415,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,391],"tags":[499,405],"class_list":["post-81379","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-fundamentos-programacion","tag-conceptos-programacion","tag-python"],"_links":{"self":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/81379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/comments?post=81379"}],"version-history":[{"count":0,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/81379\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media\/81415"}],"wp:attachment":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media?parent=81379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/categories?post=81379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/tags?post=81379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}