{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "YUc5bWUVnsVy" }, "source": [ "# Construcción de una clase\n", "* Una clase es una plantilla, un prototipo para crear objetos.\n", "* Por ejemplo, el molde para crear galletas, o los planos de un automóvil que nos permitirá crear coches.\n", "* Cada objeto creado es una instancia o ejemplar de una clase.\n", "\n", "Vamos a crear la clase Coche que tiene cuatro propiedades (las variables) y dos métodos (las funciones). \n", "\n", "![car](https://github.com/financieras/pyCourse/blob/main/jupyter/img/class_car.png?raw=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bgyrcNjVnsV1" }, "outputs": [], "source": [ "class Coche(): # en las clases ponemos la primera letra en mayúscula\n", " largo = 426 # primero creamos las propiedades, que son variables con ciertos valores\n", " ancho = 181 # todos los objetos instanciados con esta clase tendrán las mismas medidas, que luego podremos cambiar\n", " ruedas = 4 # atributo de clase\n", " enmarcha = False # por defecto los coches que podamos crear surgirán como parados\n", " # métodos (son los que definen el comportamiento de los objetos que creemos)\n", " def arrancar(self): # self hace referencia al propio objeto perteneciente a la clase\n", " print(\"Arrancando...\") # un método es una función que pertenece a la clase que se está creando\n", " self.enmarcha=True # es necesario poner self para que la variable enmarcha no sea otra interna con ese nombre\n", "\n", " def estado(self): # método que informa si el coche está en marcha o parado\n", " if self.enmarcha:\n", " return \"El coche está en marcha\"\n", " else:\n", " return \"El coche está parado\"" ] }, { "cell_type": "markdown", "metadata": { "id": "NSj5bbklnsV4" }, "source": [ "* En Python, por convenio, se pone **```self```** para hacer referencia al propio objeto que se instancie.\n", "* En otros lenguajes, como en JAVA o JavaScirpt, se pone ```this```." ] }, { "cell_type": "markdown", "metadata": { "id": "yszCiZt-nsV5" }, "source": [ "## Instanciar una clase\n", "Consiste en crear un objeto concreto perteneciente a una clase. \n", "Sinónimos:\n", "- crear un objeto\n", "- crear una instancia\n", "- instanciación de clase\n", "- crear un ejemplar de clase\n", "- ejemplarizar la clase" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NHUCWc9ansV6" }, "outputs": [], "source": [ "miCoche = Coche() # así creamos un objeto que pertenece a la clase Coche" ] }, { "cell_type": "markdown", "metadata": { "id": "uOM3Mzr0nsV7" }, "source": [ "## Cambiar propiedades de un objeto\n", "Con la nomenclatura del punto." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "6xyAo_zknsV8", "outputId": "f1e083b2-195b-4d96-8673-a12da1e42f35", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "426" ] }, "metadata": {}, "execution_count": 3 } ], "source": [ "# consultemos el largo\n", "miCoche.largo" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "J_WocvA1nsV9", "outputId": "2a64ef8b-591e-447f-f70b-18be1d9219e6", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Mi auto tiene 4 ruedas.\n" ] } ], "source": [ "print(f\"Mi auto tiene {miCoche.ruedas} ruedas.\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "KF8w2RNPnsV9", "outputId": "32c86c16-2390-4583-a87b-6e477aa1d84a", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'El coche está parado'" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" } }, "metadata": {}, "execution_count": 5 } ], "source": [ "miCoche.estado()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "beXifVgxnsV-", "outputId": "99ea19b8-9eda-454b-e750-722470a6ef63", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Arrancando...\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "True" ] }, "metadata": {}, "execution_count": 6 } ], "source": [ "miCoche.arrancar() # objeto.método() Esta nomenclatura del punto pasa el objeto miCoche como argumento de arrancar que es self\n", "miCoche.enmarcha # objeto.propiedad" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "M6kCQVRKnsWB", "outputId": "f2d5a436-8a22-4cf6-fd59-4bececaf866c", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'El coche está en marcha'" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" } }, "metadata": {}, "execution_count": 7 } ], "source": [ "miCoche.estado()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" }, "colab": { "name": "calisto2_0020.ipynb", "provenance": [], "include_colab_link": true } }, "nbformat": 4, "nbformat_minor": 0 }