{"id":73094,"date":"2022-06-27T16:21:04","date_gmt":"2022-06-27T14:21:04","guid":{"rendered":"https:\/\/keepcoding.io\/?p=73094"},"modified":"2024-04-10T15:55:00","modified_gmt":"2024-04-10T13:55:00","slug":"clase-de-una-carta-en-python","status":"publish","type":"post","link":"https:\/\/keepcoding.io\/blog\/clase-de-una-carta-en-python\/","title":{"rendered":"C\u00f3mo crear clase de una carta en Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Siguiendo con nuestra secci\u00f3n de ejercicios pr\u00e1cticos en <a href=\"https:\/\/keepcoding.io\/blog\/que-es-la-programacion-y-para-que-sirve\/\">programaci\u00f3n<\/a>, <strong>en este post te traemos los pasos para crear una clase de una carta en <a href=\"https:\/\/keepcoding.io\/blog\/que-es-input-en-python-y-como-usarlo\/\">Python<\/a>.<\/strong> Entendemos una carta como un objeto material o virtual que forma parte de una baraja de cartas; estas puede ser de tarot, una baraja espa\u00f1ola, francesa&#8230; Realmente, cualquier tipo de carta. Por lo tanto, si quieres seguir ejercitando tus habilidades en programaci\u00f3n, a continuaci\u00f3n te presentamos el proceso para crear una clase de una carta en Python. <\/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\/clase-de-una-carta-en-python\/#Crear_una_clase_en_Python\" >Crear una clase en Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/keepcoding.io\/blog\/clase-de-una-carta-en-python\/#Pasos_para_crear_una_clase_de_una_carta_en_Python\" >Pasos para crear una clase de una carta en Python<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/keepcoding.io\/blog\/clase-de-una-carta-en-python\/#Haz_mas_ejercicios_con_Python\" >Haz m\u00e1s ejercicios con Python<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Crear_una_clase_en_Python\"><\/span>Crear una clase en Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como hemos podido ver en un anterior post de KeepCoding sobre <a href=\"https:\/\/keepcoding.io\/blog\/como-crear-una-clase-nueva-en-python\/\" data-type=\"URL\" data-id=\"https:\/\/keepcoding.io\/blog\/como-crear-una-clase-nueva-en-python\/\">qu\u00e9 era una clase en Python<\/a>, una clase se crea para construir un nuevo tipo de objetos, al que se le puede crear instancias. Una <a href=\"https:\/\/docs.python.org\/3\/tutorial\/classes.html\" data-type=\"URL\" data-id=\"https:\/\/docs.python.org\/3\/tutorial\/classes.html\" target=\"_blank\" rel=\"noopener\">clase en Python<\/a> se define con la siguiente instrucci\u00f3n:<strong> class NombredelaClase<\/strong>. Adem\u00e1s, debe tener un constructor que la acompa\u00f1e. De esta manera, podr\u00e1s crear instancias a partir de la clase.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que recuerdas qu\u00e9 es una clase,<strong> te contaremos los pasos a seguir para construir clase de una carta en Python.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pasos_para_crear_una_clase_de_una_carta_en_Python\"><\/span><strong><em>Pasos para crear una clase de una carta en Python<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En primer lugar, importaremos una <strong>abstract property <\/strong>a nuestro programa:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from abc import abstractproperty<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n,<strong> es preciso establecer las propiedades que caracterizan las cartas.<\/strong> Primero, tienen un valor que puede ser num\u00e9rico, un palo con el valor de <em>string<\/em> y, por otro lado, el s\u00edmbolo, que puede ser un <em>string <\/em>o cadena. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">     valor: numerico<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">     palo: string<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">     s\u00edmbolo: string<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que ya sabemos qu\u00e9 estamos buscando, podemos empezar a modelar la carta. <strong>Empezaremos definiendo el constructor de la carta: <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _init_ _ (self, v, p, s): <em> #valor, palo, s\u00edmbolo<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self.validar_valor (v)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self.valor = v<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self.palo = p<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self.simbolo = s<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora,<strong> vamos a generar una representaci\u00f3n de la carta con el <em>m\u00e9todo str<\/em>, que sirve para crear una cadena.<\/strong> A este se le ingresa el propio objeto como par\u00e1metro inicial:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ str__ (self):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return \u00ab{} {}\u00bb. format (self.simbolo, self.palo)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s, utilizaremos el <strong>m\u00e9todo de representaci\u00f3n<\/strong>, que concatenar\u00e1 el s\u00edmbolo y el palo: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ repr _ _ (self):    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.simbolo + self.palo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para comparar cu\u00e1l entre dos cartas diferentes es mayor,<strong> estableceremos las siguiente funci\u00f3n, que utilizar\u00e1 el m\u00e9todo eq<\/strong>. Aqu\u00ed se ingresa el par\u00e1metro self y el otro, diferente. Devolver\u00e1 la comparaci\u00f3n si esta es igual.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ eq _ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.valor == otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso de querer comparar y notar la desigualdad,<strong> utilizaremos el m\u00e9todo ne<\/strong>: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ne_ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.valor != otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para hacer comparaciones, teniendo en cuenta qu\u00e9 carta es mayor que otra, seguimos el <strong>m\u00e9todo m\u00e1gico gt<\/strong> expuesto a continuaci\u00f3n: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ gt_ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.valor &gt; otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para hacer otro tipo de comparaciones, que sea mayor igual que otra carta, la instrucci\u00f3n ser\u00eda <strong>con el m\u00e9todo ge<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ ge_ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.valor &gt;= otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, para hacer el menor que, <strong>deber\u00e1s ingresar a tu c\u00f3digo el m\u00e9todo lt<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ lt_ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       return self.valor &lt; otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para realizar el m\u00e9todo de menor o igual que, <strong>deber\u00e1s utilizar el m\u00e9todo le<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def _ _ le_ _ (self, otro):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      return self.valor &lt;= otro.valor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Los siguientes son los lanzamientos de excepciones de la clase cartas<\/strong>, mientras hacemos validaciones espec\u00edficas:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">def validar_valor (self, valor):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#de esta manera validaremos que el valor debe ser un entero <\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">if not isinstance (valor, int):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">      raise ValueError (\u00abEl valor de la carta debe ser n\u00famero entero\u00bb)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#de esta manera validaremos que el valor debe ser un entero positivo<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">if valor &lt; 0:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">   raise ValueError (\u00abEl valor debe ser un entero positivo\u00bb)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que puedes ir probando tu programa de c\u00f3digo<strong> con la opci\u00f3n del Unittest en Python<\/strong>. Si quieres saber m\u00e1s acerca de esta <a href=\"https:\/\/keepcoding.io\/blog\/herramientas-clave-para-desarrolladores\/\">herramienta<\/a>, visita nuestro post sobre <a href=\"https:\/\/keepcoding.io\/blog\/que-es-unittest-y-para-que-sirve\/\" data-type=\"URL\" data-id=\"https:\/\/keepcoding.io\/blog\/que-es-unittest-y-para-que-sirve\/\">qu\u00e9 es Unittest y para qu\u00e9 sirve<\/a>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Haz_mas_ejercicios_con_Python\"><\/span>Haz m\u00e1s ejercicios con Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que has ejercitado tus habilidades en c\u00f3digo con el ejercicio de c\u00f3mo crear una clase de una carta en Python, <strong>est\u00e1s m\u00e1s cerca de alcanzar la meta de convertirte en un experto en c\u00f3digo y en lenguajes de programaci\u00f3n.<\/strong> La clase es uno de los elementos fundamentales para programar, as\u00ed que es necesario que perfecciones tu conocimiento sobre ella para dominar el <a href=\"https:\/\/keepcoding.io\/blog\/que-es-el-sector-it-top-5-empleos\/\">sector IT<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si quieres seguir practicando con m\u00e1s ejercicios en Python y, adem\u00e1s, acompa\u00f1ados de la gu\u00eda de un profesor experto en el tema, te recomendamos echarle un vistazo al programa de nuestro <a href=\"https:\/\/keepcoding.io\/nuestros-bootcamps\/bootcamp-aprende-a-programar\/\">Aprende a Programar desde Cero Full Stack Jr. Bootcamp<\/a>. <strong>\u00a1Ap\u00fantate y sigue practicando!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Siguiendo con nuestra secci\u00f3n de ejercicios pr\u00e1cticos en programaci\u00f3n, en este post te traemos los pasos para crear una clase de una carta en Python. Entendemos una carta como un objeto material o virtual que forma parte de una baraja de cartas; estas puede ser de tarot, una baraja espa\u00f1ola, francesa&#8230; Realmente, cualquier tipo de &#8230; <a title=\"C\u00f3mo crear clase de una carta en Python\" class=\"read-more\" href=\"https:\/\/keepcoding.io\/blog\/clase-de-una-carta-en-python\/\" aria-label=\"Leer m\u00e1s sobre C\u00f3mo crear clase de una carta en Python\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":4,"featured_media":73136,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,391],"tags":[499,405],"class_list":["post-73094","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\/73094","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=73094"}],"version-history":[{"count":0,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/73094\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media\/73136"}],"wp:attachment":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media?parent=73094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/categories?post=73094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/tags?post=73094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}