Content for Decem's Python course.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 274 lines 25 kB view raw
1{ 2 "cells": [ 3 { 4 "cell_type": "markdown", 5 "metadata": { 6 "slideshow": { 7 "slide_type": "slide" 8 } 9 }, 10 "source": [ 11 "## 7. Orientación a objetos" 12 ] 13 }, 14 { 15 "cell_type": "markdown", 16 "metadata": { 17 "slideshow": { 18 "slide_type": "slide" 19 } 20 }, 21 "source": [ 22 "Cuando hablamos de **orientación a objetos** estamos hablando de un **paradigma de programación** que se basa en el concepto de *objetos* y *clases de objetos* para **representar una realidad** concreta en un programa." 23 ] 24 }, 25 { 26 "attachments": { 27 "image.png": { 28 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaoAAADzCAYAAADXeVJ9AAAgAElEQVR4Ae2dCXgURfr/34QAGtBwE4FAokbuY7k2iCwIgiBRUGAVDOgKIiIeyKKgi4CICgL7X2FFBWFdD9RlUQQEVC7Pv4Igq3KoCcqRQCQcgRCBQP+eb8VqO5PMZGYyk+me+dbzQFfX1W996u16u45MRQmdIwn069fvi+XLl3cMhvDJycnHfC03KioqRuepXLlyVe0P5jUlJcUsPi8vL9O8EZGCgoJ8fV+1atUC7c/Pz6+i/YG4xsbGntflpKSknND+mJgY04+ws2fP7tFxjRo1OqX9sbGxX0ZFRS256qqriqTX8bySAAmQgGMJtGzZ0hAR/gsTBu3bt0dbdnesQlJwEggiAfMrOIjPYNE2IVCvXj1Tktq1a5t+fzx9+vQpkq1SpUrm/aFDh0x/3bp1Tb813AwswbNr164ioSdPnjTvv/rqK9Pvj6dJkyZmNmu5CNy/f78ZV716ddPfs2dP03/8+HHTD8/atWuL3Pt7s2XLFklKSqq/Z4858PK3KOYjARIgAXsQaNu2bZ4eURl0jiVw5513mqPiqVOnbrKHdlEKErAXgWh7iUNpvCVQv379bG/TMp19CYwbN84Ubs+ePfHmDT0kQAImARoqE4WzPLm5uQedJTGlJQESIAH/CNBQ+ceNuUiABEiABMqJAA1VOYHmY0iABEiABPwjQEPlHzfmIgESIAESKCcCNFTlBDrQj4mOjk4PdJksL7QEcnJyft/jH1pR+HQSsBUBGipbNQeFIQESIAEScCVAQ+VKhPckQAIkQAK2IkBDZavmoDAkQAIkQAKuBGioXIk45D4hIeGwQ0SlmF4SOHLkSGUvkzIZCUQUARqqiGpuVpYESIAEnEeAhsp5bUaJSYAESCCiCNBQRVRzs7IkQAIk4DwCNFTOazMlcUZGxvcOFZ1iuyGQnZ19oZsoBpNARBOgoYro5mflSYAESMD+BGio7N9GlJAESIAEIpoADVVENz8rTwIkQAL2J0BDZf82KlHCatWqtS8xgoGOJZCZmVnVscJTcBIIIgEaqiDCZdEkQAIkQAJlJ0BDVXaGLIEESIAESCCIBGioggiXRZMACZAACZSdAA1V2RlGfAnfffed9OnTR/JOnizC4sMPP5S0tDQxDKNIOG+KEqhXr54KyMvLiykawzsSIAEQoKGiHpSZwA8//CBr1qyREy6GaseOHbJy5coyl88CSIAEIpsADVVkt39Aaq9HTNHRRdXp119/lRo1akhUVFRAnhOIQs4VnAtEMSyDBEigHAkU7VnK8cF8VPgQqFChgqpMwdkCOX36tJoCzM3Nlfz8fKlatXDH9cyZM2XOnDlmpTECGzZsmLp/+eWX5bbbbpORI0dKq1at5IknnpBPPvlEbr31VmnTpo089dRTYjUwBw8elEceeUTat28vI0aMEIzo4BYtWiQPPfSQTJs2TZo1aybXXXedpP+YruLOnz8v8+fPl0aJjaRhw4YyYcKEYlOVKiH/IwESIAESCAyB1NTURSKCxR8j1G7VqlVKDi2P9dqmTRslXv/+/Y0HHnjAFHX+/Pkqz7lz54yHH35Y+VNTU41p06aZZfXs2dMYP368ut+4caPKm52dbXTo0MFo3bq1MWvWLKNLly5Gjx49VBzKx7OTk5ONGTNmGL169TK6d+9unDlzxli2bJmKmzBhgopLTEw0/va3v5nyhMqza9cuVRcLs8AoCEshgTAiwMXbMGrMUFVFj6imT58udevWlUqVKklMhRhZs3aNbN68WYl19OhRadu2rSmiznPu3DmVvmXLlvLGkiVSpWpVWbFihSQmJgpGWpUrV5b169fLpk2bpGvXrmpUhtHau+++K1dccYXUqVNHjcz0Rg48493ly6V+gwbSsUNHubr71bL3573y/PPPy/333y9PPvmkmoq87LLLZODAgTJkyBBp2rSpKRc9JEAC9iNAQ2W/NnGcRHptavDgwZKUlGTKf/DQQdmwYYO6x9Tb2bNnzTi9boX1LRgtTBHCSMHVrl1blXPBBReY96dOnRIYO0zfTZ06VRkpRNasWVOlOXL0qMTExMgll1yijJQqp05tFXco+5C8//77csstt5jrZe3atVNxBw4coKFSJPgfCdiXANeo7Ns2jpFMG6rz584XkRnh2jj98Y9/lI0bN5r3GRkZKm2F6ArKUGFkZXXWe2zKqFixolr/On78uGmckD4zM1NlKygoEDzvzJkzZjFYL4ODwUtNTZW33npLYDDh1q5dq64tWrRQV/5HAiRgXwIcUdm3bRwjWXRU4fdOVHTR3X0wQthQAYfR1qxZs9T0W2xsrMyePVvi4uKkQkwFgVHSU4FIi6lDGB7tcA+DFx8fLw8++KAaUe3fv18Zqblz5+pkylBpQ4TAk79tl8doDZsu+vfvL4MGDVLTiUuWLJEZM2aoMs0C6CEBErAlARoqWzaLs4RKTEqUvn37qik7q+QYrdx8880qCGtHb7/9tkyZMkVN22Fn365du1TcFclXmEYFAR06dJDq1aubRfXq1UuNqBAwadIkZeBeffVVZWRg/LCmFXdxnLRq2UoZK50R61fIi+nA5ORkWbp0qdpBiHjsEMQfI9ORAAmQAAkEiYCddv35u2Pu/Pnz/mYNm3zc9RekF4TFhhUBrlE5tDnz8vIqOVR0U2y9ocIMiHDPlVdeGeEEWH0SKJkADVXJXBhKAiRAAiRgEwI0VDZpCIpBAiRAAiRQMgEaqpK5MJQESIAESMAmBGiobNIQFCNyCegt9RdddFHkQmDNScADARoqD3AYRQIkQAIkEHoCNFShbwNKQAIkQAIk4IEADZUHOIwiARIgARIIPQEaqtC3gV8SnD9//mK/MjKT7Qjs3btXyaTP7rKdgBSIBEJMgIYqxA3Ax5MACZAACXgmQEPlmQ9jg0xg7NixsmrVqiA/hcWTAAk4mQANlZNbLwxkX7dunXz77bdhUBNWgQRIIFgEaKiCRTbI5VaqVCkBj8BRGU52ON5D/x2Rk+tRFtlxxhZclSpVylIM85JA2BKgoQrbpg1dxbKysuS5556Tq666Snbs2KEEwSGG/5z3T+nYsaPceOON5hH1OBDR9ZDEeXPnydVXXy3XX3+9YMSl3datW9WxITiyA+dS7d69W0dJdna2IN+YMWNk4cKF6h6ROBX4T3/6k2CKcc2aNXLixAkzDz0kQALOIEBD5Yx2sr2UGBVt2bJFxo0bp452x3Hx3bt3l4QENfCTp59+WsbcO0aF4STe3r17S/qP6erARD2iOldwTu69917526S/yTXXXCMXX3yxDBgwQA4ePKgMzPDhw1XY/ffdL9u2bZM+ffrIgf37BacFwyjO+fscOXbsmDrzCkZuz549cvFFF8vQoUPN9M2bN1fxMHqGYdieKwUkARIgAccS6Nmz5zYRMeLi4kJ+NtP6deuNdu3aodc3OnToYLz00ktGdna2KddPP/2k4uY+O1eF5efnG8uWLTNOnTpldOnSxZgyZYoKRxjKWPHuCnX/zf++Ufeff/65cfDgQaNGjRrG+PHjjU8//dTIzMw0Fi9ebOTm5hojR440mjdvbuzft8/AGVdZWVmq3JtvvtmUAeE7d+40Zs+ebbRs2VKV27t3b2PlypVmmlB4cB4V6ox/w4YNw5WOBEiABMKDQIsWLX5B54aOPtRu4MCBqqMdMGCAcejQoWLiLF26VMVb43IO5xinT58uYqj69+9v3HTTTWZ+GB7UcdWqVSoMBnHIkCEqLD4+Xhk4GCoYa93Zu16PHz9ulgcP7pcsWWIkJiaqPCgvlM5qqEaNGgWZ6EiABFwI8Ch6FyC89Z3A3LlzJTExURYsWCApKSly3333ydC0oVKzVk1VmN7w8csvvwiOh4dLG5qmjokvKCgwj4/HtF2zZs1MAQ4eOqT8Z86ckc8//1wenvCwbFi/XubMmSMfffSR/PnPf1ZrWbVr15ZWrVrJyJEj5ezZs+aaV7169dRUIaYW//e//8myZcvUEfQHDhyQ1NRUeeyxx9TVfCA9JEACtiRAQ2XLZnGWUPHx8fLMM8+ojQyvvvqqzJgxQ5599lnBOhXWh7p06SKdO3eWwYMHyx133CEnT56U1atXqw0O2GQRE1OohqNHj1bGB78ijh1w2JChXc2aNdUGjEmPPSaNGzdWGyPw3AYNGsjkyZPVc/CMTp06qSxYg+rRo4dg3euWwbfI0qVLBetT2IQBI3XFFVfoonklARIgARIIBgE7Tf25Tp0d2H/AmDRpkoGpPKwNwWHab+LEiUZSUpKa3sN6FNxdd91lvPPOO8pfcLbA+Ne//mWkpKSoNa/p06cbvXr1MjZv3qzi16xZo6YKUca4ceMMTJtpt3HjRuPuu+82Lr/8cqN+/foGptGwNobnv/7a68YHH3xgYG3Mbo5Tf8F4O1gmCZCALQg0adIk3y5rVHbq/GGYtHG0k1zuZLEaKm6msMWrRSFsSIBTfzZsFIrkP4GoqCj/MzMnCZCALQnw76hs2SwUigRIgARIQBOgodIkeCUBEiABErAlARoqWzZL6UJlZWVdgFT4rTy68CCQl5cXHhVhLUggwARoqAIMlMWRAAmQAAkElgANVWB5sjQSIAESIIEAE6ChCjBQFkcCJEACJBBYAjRUgeVZbqXpM4zatm1bbs/kg4JLAL/YQUcCJFCcAA1VcSYMIQESIAESsBEBGiobNQZFIQESIAESKE6Ahqo4E4aQAAmQAAnYiAANlY0ag6JEJoHWrVurip84cSIyAbDWJFAKARqqUgAxmgRIgARIILQEaKhCy59PJwESIAESKIUADVUpgBhNAiRAAiQQWgI0VKHlz6eTgERHF76GXKOiMpBAyQRoqErmwlASIAESIAGbEKChsklDUAwSIAESIIGSCdBQlcyFoSRAAiRAAjYhQENlk4agGJFLoGnTppFbedacBLwgQEPlBSQmIQESIAESCB0BGqrQseeTSYAESIAEvCBAQ+UFJCYhARIgARIIHQEaqtCxL9OTk5OTj6EA/u1NmTDaInNBQYGSY+/evbaQh0KQgN0IRNlNIMrjHYGEhIRT+/btuzA+Pl7S0tLcZqpWrZoZ17hxY9PvradhQkMzadKlSaY/VJ709HSvHp2bm+tVOl8TBfrDIC8vT2677TarGHwnrTToJwER4UvhXDUw7CR6XFycKU6nTp1Mf926dU2/q6dWrVquQer+8OHDJYYjcOvWrWYcOnntMjIytDcg15o1awakHG8LycnJkUsvvXRHRkZGc2/zMB0JRAoBGiqHtnSHDh3O5OTkVAx0B+1QHI4Vu06dOmIYhd8cFStWfC0zM9P98NixtaTgJFA2AjRUZeNnx9y/z/UVStfGjZDd3IQjuKubOGtZrs9xk8UWwWo97zdJvvYg0Q+WuO8sfn+89V0yWXn9PhQUQTi4JorIYBFZ45KPtyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4J4Gfmca7H2yLyd89JGUsCJEACJEAC5UOgkYjcLyLbRAQ/lW79Vz4S8CkkQAIkQAIk4EIAxgkjppKMEw2VCyzekgAJRDaB1g6vPuRHp+8UB1kXu4yarIbJ6t/glEpRThIgARIIJIF+IjJZRPaU0FmiY9ThWCP5/VjeQEoQuLJwLtbR3/65OyMrcE8rW0kwqOBrNUSl+WmoysacuUmABBxEAJ04vuLRqZfWOVrj7VxFGFFtVCEz6mZXwwr+Vq7e+rFuRUcCJEACYU+gtDUQT52mneFgxOcqO4yxHR0MqK8fCaif3UeJdmRNmUiABBxIwNcOUnf+6Cjt6jDS0HK6Xu1qrLDl3FVWb+8xckS9UIaT1uPsqj+UiwRIwGYEsB7lbYdoTYe1LDs6b6bRUGc7OhgbK2N//dpwccRlx1amTCRAAj4TwLSTr4v4GIXZ1VnXpTx19HYdeXgrv6e6ucahfWGc8XFh13U6u+oT5SIBErARAXx9e7teZddfRMDOOddO2t29XXfMwZh4mo5FHPj7+nFh5YB2RhkccdnoBaQoJEACngmg07J2ZKX57drB+TqNiTUdOzoYXE/Gyro+iJEh6oFpQ39HY3rEZdd2tWMbUSYSIIFyIoAO0dtRlDZe4TDtZ62LXacAS2sbd0ZWGy5/R1xoXxhCbswop5eQjyEBEnBPwNPoA1/m7gyYXXfN+TLtpw0VrqinnR3aqaTRFerrjcMoCWXA+JRUjpVFSX7k0TsKub7lDXGmIQESKDOB0r7UMQ2Ir3J3nZpdRyAYAZTU0XoTZvcpLxgI64cFPiT8dWh/bN/3d8QFww5ZvDWU/srJfCRAAhFKwN3XOTpzdH56y7k7Q2XX0RSa09qRuzNO7owv8jrBoV0CbST0iMsfw2UdbdFwOUGDKCMJ2JgAOjhPHRGmhVynddDxuHbsdh1NAb1r/UqavoQh1lOauCIPOn67j6jKS7WgA2Dk78YMq+Fy1afyqgOfQwIk4EACnn6lAR2LHkWVVDWrscKUoJ0d6gHDo/9BdlfjRYPkWwvC2Ogdha4fLe5GrdZw8If+2fkDxzciTE0CJBBQAqWNotCJePPViw4fX9jepA1oBQJQGA1VACBaioAuYASqR6VWo1SaHyNc6BE+KJyoSxYM9JIACQSCAL5i3X0BlzaKCsTz7VIGDVXwWsI62vLHcCEPp12D1z4smQRsSwBfvJ46DaxFRdI0DA1V+amq1XC5+0jyNOriaKv82opPIoGQEcDXqbuOIJJGUdYGoKGy0ihfP9YDsa6JKT93eukunKOt8m0rPo0Egk6gtFEUOutIXROgoQq6+nn1AIzisSnDnz86xkcW8vGXMrxCzUQkYD8Cnnb0Wf8uyn6Sl49ENFTlw9nXp+hNGa7t426EZQ3HaIvThL4SZ3oSCAGB0nb0YcolUkdR1uZw7Qi5Pd1Kxz5+f0dbMGBoY3ywwfjRkQAJ2ISAp7UojKLYGf/eUDRUv7Nwiq8soy1ugXdKK1POsCWAUZSnhWmOooo3PQ1VcSZOCsGsQFl+KQPtz2lCJ7U4ZXU0AU+jqEjd0edNg9JQeUPJOWkw2uI0oXPai5JGCAG8mBxF+d/YNFT+s3NCTr0F3tPfDlo3Ylj93ALvhBamjLYmgCkPTOVZXyyrHy8Z16JKb0IaqtIZhUuKQGyB5+8Shos2sB5BJwADxFFUYDDTUAWGoxNLwXvk7zQhN2U4scUpc7kQKG0UhU6XW3B9awoaKt94hXPqsk4T8g+Ow1k7WDevCOAlcvf7aAjHZgo63wnQUPnOLBJylHULPKbl+SvwkaAprKMigFEUfh7Guv5k9aOjxdw7nX8EaKj84xZJufQWeBgfT1Pu1vdS+/ERCR3j2lYkaUyE1RVTCZ5GUYinKxsBGqqy8YvE3GXZlKF3EnKKPhI1J8zqjBfBtQPVX2i44g8UOYoKTKO7csYUKx0J+EIARgfvpK+jLbzL+sd0MWqjIwHHEPA0isKLwFFUYJuShiqwPCO9NHxAYprPn1+Bhy5yijDSNcjm9cdXmac/SsQXG7+6At+INFSBZ8oSCwngfdU7CX0dbaEvwJoYpwipTbYhgB177tai+Ie7wW0m65Qq/HQkECwCMDp41z19kLrqI+7RN+jfIwyWbCyXBNwSwNeWpy8tKDVHUW7xBSTCtWMISKEshAS8IKB/TNfdR6qrbup7jra8gMskZScA4wMjpBXP9QpF5GaJsnP2pgRX9t7kYRoSCDQBf6cIraMtftQGulUiuDxPoygoHRZT6cqPAA1V+bHmk7wjgClC9AO+ThFidkZPEdJoeceaqVwIYITk6Q93EUflcoFWDrc0VOUAmY/wmwD6BOz09dR3uOqwvkce7iL0G33kZYSyuJuHRji3nIdOJ/RLra+hk4RPJoHSCZRltKV/1qn0pzBFRBLQnaDrFYrDUVRoVcK1TUIrDZ9OAt4TsI623H0Iu+o37pEWoy18IHMt3HveYZ0SX0CuyoK5Z6xV0YWegPUFh5+OBJxIAAZHTxFaddq17ynpnlOETmzxIMhs3eHHzRJBAFyGIrFFGC82/uGjgo4EwoEA9NqfH9HFhgxOEYaDBrAOJEACJOAgAhht4QPZ1w0ZMFpcP3dQQ1NUEiABEggHAljX0n9o7OnHBvQUIafDw6HVWQcSIAEScDABb6YIHVw9ik4CJEACJBBOBEqaIuTUXzi1MOtCAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQbgSi+vXr98Xy5cs7BrpiycnJx3wtMyoqKsaap3LlylWt98Hyp6SkmEXn5eVl6puCgoJ87ce1atWqBfo+Pz+/ivYH4hobG3tel5OSknJC+2NiYkz/2bNn8YvKpmvUqNEpfRMbG/tlVFTUkquuuspMr+O8vVIXRKgL3mqLPdNRh8NUh1u2bKl/Mp7X4qf9Oo5J+/btIXN3f7oR6kKx054d1/7WE6vLogv+6I8d8lCHw1OHi4xgvFW0evXqmUlr165t+v3x9OnTx8xWqVIl0w/PoUOHzPu6deuafmu4GViCZ9euXWboyZMnTT88X331VZF7X2+aNGliZnEte//+/WZc9erVTX/Pnj1N//Hjx00/PGvXri1y7+/Nli1bJCkpqf6ePUUGX/4WV2o+6oIIdaFUNbF1Auqw/XU4pmLFipg+ioUmGQY+IOmcSGDkyJGyYMECJfrtt98+YvLkya/4Wg/qgq/E7Jk+ELpgz5qVLhV1uHRGTkjhqsPR9evXz3aC4JTRM4Fx48aZCfbs2RNv3vjgoS74AMvGSQOhCzaunkfRqMMe8Tgm0lWHo3Nzcw86RnoKGlQC1IWg4mXh5UCAOlwOkEPwiOgQPJOPJAESIAESIAGvCdBQeY2KCUmABEiABEJBgIYqFNT5TBIgARIgAa8JREdHR6d7nZoJHUEgJyen6D5/L6WmLngJykHJ/NUFB1WxiKjU4SI4wuIGOswRVVg0JStBAiRAAuFLgIYqfNuWNSMBEiCBsCBAQxUWzchKkAAJkED4EohOSEg4HL7Vi8yaHTlypLI/Nacu+EPN3nn81QV718q9dNRh92ycGgMd5ojKqa1HuUmABEggQgjQUEVIQ7OaJEACJOBUAjRUTm05yk0CJEACEUIgOiMj4/sIqWvEVDM7O/tCfypLXfCHmr3z+KsL9q6Ve+mow+7ZODUGOswRlVNbj3KTAAmQQIQQoKGKkIZmNUmABEjAqQRoqJzacpSbBEiABCKEQHS1atXaR0hdI6aamZmZVf2pLHXBH2r2zuOvLti7Vu6low67Z+PUGOgwR1RObT3KTQIkQAIRQoCGKkIamtUkARIgAacSoKFyastRbhIgARKIEAK2NVR33nmnTJ06Vc6fP1+sKTZu2Ci9evWS3NzcYnGRHFCvXj1V/by8vJhQcZg4caIsW7asyONXrlgp1113nZw9e7ZIeChuIMNDDz0k7du3l0suuUT+8Ic/yKBBg2ThwoVy4sSJUIgUlGfaQReCUrFyLBR6/MgjjxR54q5du+Taa6+VH374oUi4Lzfo09LS0uTrr7/2JZssX75cmjVrJg0aNJAmTZrILbfcIm+//XZY6a0ViFWHbWuotm/fLlOmTJGXX37ZKruk/5gudwy/Qz744AM5evRokTjehJ7Apk2b5JtvvjEFWbdunaQNTVMvV4UKFczwUHn2798vzzzzjHTs2FEee+wxGTp0qNStW1cefvhh6datG3UqVA1jw+dCjzdu3GhK9vPPP8vgwYOVYahWrZoZ7qsnKipKfRw1atTIp6yHDh2SnTt3yv333y933XWXynvTTTcJPg4Nw/CpLKclDtmXd2mgatWqpZKMHTtWGjduLFdeeaX8+uuvMubeMbJnzx4VFxOkju9cwTmpEBP6TrU0RnaMv+iiiyQ/P1+J9vnnn6svR4ym/j5njkRH2+e7CC/4NddcYyK8++67pUWLFrJ+/XoZMGCAGU5P5BK48MIL5dixYwpAVlaW+qjBzWuvvSa1a9f2GwwMVb9+/XzOf1HVi1SeUaNGCd4zuBtvvFGNrMaPHy++Gj5fBcBIELLjX3k7+/QcLjWPjY1VndzVV18tI0eOlAP798sLL7wga9askQcffFCljooqFB9fExgWo4OBQcM0DowNRlyYIsTwvU2bNtK/f381lfjdd9/JsGHD1DB65syZknfypCoPUz8PPPCAxFSMkVatWsmCBQvMLxVMGT399NOqM0OZr7zyii2mslywhfwWL9CpU6cEIysYg5SUFHn++eelStXfd8xnZ2fLvLnzZMyYMaqtcG91Bw8eVG2G6bkRI0aY0yyLFi1S03bTpk1TbQcDiBE2XiC8sBvWbzCLmT59unquGfCbRxtL1y/QvJN5KkWN6jXUFcb2jTfeUPqAdt+9e3eRonbs2CGQA1+3mH7BRxT0B7rx7Tffmmm///576dGjh/zyyy/KgLsrk/plIrONJ/bCWMnJyRGMpDA9DD1F+yUlJZkyutOT1197Xf7617+a6eCBvjz33HOqb0J5+JDbvHmz6peg2+i7MNJ///33i+TTN/rj2aq7MTGFY41z586pZO7k0WW4e7cQDx2dMGGCerfwbqLP1Q7vVrt27QQDCMxCZGRkqCh376TOF7BramrqIhHBuNGwkxs8eLAxatQoY+/evUbjxo2Nbt26GXFxccYzzzxjrFy5Usm7f98+JfKLL76o7seMGWM89NBDyv/+++8bO3fuVP46deoY06ZNM9555x0jIyPDSEhIMDp16mRMnz7dQNyECRNUObjifvbs2cbDDz+s8i5fvlzF/QNRwR8AABO0SURBVPvf/zYuv/xyY+6zc9UzIMtTTz1lG2S7du0yWrdurWT+rT191pFA6MKQIUOUHDVq1FCybNy4sQij9PR0Izk52UhKSjJuvfVWo379+kbHjh1VuyBhdna20aFDB1XGrFmzjC5duhg9evRQZTzwwAOqTOSfMWOG0atXL6N79+4qD+r85ptvms/S+mMG/OaBPiEtdOUf//iH8fjjjxs33XSTAXn79+9vnDp1ysg7maf8aOObb77ZaNOmjdKL9evWq1Lee+89VQbkHjBggPIPGzbMOHr0qKrLuHHjzMfC37ZtW+PwL4c9lhlI/QqELvisPDbJEAgd1o03f/581bZoP+gM9NHqPOnJsmXLVJ7du3erLLiijNdfe93Izc01/dBZhEPXJk6caIwcOVK9E3v27LE+SvnfeOMNlRb9FnQX/VTz5s1V33j+/PlS9dbTu5Wfn2/06dPHiI+PV/0a3sGUlBTjzJkzBt5ZvB9paWnquV27djV69+6t3hV37yTylcUV0+FANmxZBHPNi07srrvuUsHo7NCY6LROnjhh6I4CnQ4gopGnTJlinDt3zig4W6A6leeee85AZZFvyZIlZvGTJk1SHU9WVpYK+/rrr42tW7eanR0USbvx48erThXQYZRatmxpLF26VHWqH3/8sfHRRx/ppCG/FmtYPzqOQOgClBnM77jjDvUC4YPgyJEjJh+8iHi58JGBlwvtgHaFQYDDxwI+TPQLjg4c5aHd8VKg09AfKBvWb1Bxn332mbquXr3afA4Mx4gRI8x77Tmw/4BKizJd/3377bcq2eLFi1Uc9A4y/vrrr8bo0aPVB05mZqbSCRhCvNyI//LLL02dW7BggXqp0SmgbtDNl156yfBUJgxcIPUrELrgh/rYIksgdFjryvPPP6/0oHPnzsqAoLPetm2bjvbYpuib8DGmjduTTz6pPnShx8eOHVPlol/Shgr9CRw+aKCX6GdcHdIjDh/TVt2Fjn366ace5YGOeXq38EGOMlEOHHRXv0/4KMRHGWSH+/7771Va9JXu3skff/hRpfX3P1cdtu0alZ4PhfZ37dpVVq9eLZdddpmaQtJzpNFRUfLuu+9K5cqV5b777itcA4kWufTSS9UwXU/zYHeXdhi633HHHRIfH6+CWrZsqYa8mZmZ6r5J0yY6qXTu3FktvGMK8c4Rd0rFihVl0qRJakETC+9z5swx09JTSACMrr/+epk/f76aHsDU7aOPPirz5s2TM2fOyJtvvinHjx+XBgkJxZBhGhb5sNvziiuuUPE1a9ZU1yNHjwqmOdCW9Rs0UGG16xSuE+QczlH3BWcL1BX/oe2hQ64uKrpwfh1TMzfedKOcKyiQb779VjDvj2mM2bNny4YNhVOIaGNXh6ln7PjCvyVLlhSJxvrWs88+q6Z8kO706dOCDSSpqamCNQS4ksrENCL1qwhKW9zozT9Lly6VKlWqyI8//ihYy3zvvfekevXqHvVk3759qp956aWX1FQZlhGgY5gC1+te0FH9jGZNm6k616xVqO+u0+GI1P0ZpqGxfhZTIUaV9dfxf1XLEpAJriQd++KLLzy+W5988omaosb0Ixz6RyyXYJoxPT1d0E/q6fvk5GQV9/Pen92+k78c/kUuu/wyVVYg/rOtoSooKDAbERXt3bt3ifXNy8tTu7YuuOACFQ+jgvUC3UkgEGVp17BhQ4ESaffRpo9kwMABaq44Li5O1q5dq7YsY81gxYoV0r17d7Vwit0+N1x/g2zbtk013OOPPy5PPPGE/Pe//9VF8SqiFBcvTKVKldQW2rlz56r5fcy9D00bqlhi/Q/rjmCs59axFRV5YMS0cQJQ/QGBNsSLCmOnHdoYrm58XfUiffHlF5J6faoqF4akefPmOmmxK9bStM5gHe2ee+5RxgS7/7Cjq0aNGuojBc+EjHhhkR4bLuCwdvanP/1JPUsbRL3lHboCowfdvP3226VOnToey2zbtq1KR/0q1kwhDdDrP9AHtP0///lPwYcX1rzh96QnaNOqVauqD1use2MDGNbI4bB+DgcjpT+6C84V9lFav/HB5+p0WugiPs7hql5UVX1oX3zxxR7lwYY0T+8W9B1rcXinUDbWq/D+YO0feWfMmCFY34IBw7oattYjDLt6tcyQR7+TeJcD6WxrqNA5aEVxrbDu3CrExKhOENuN8XdXUA58sQNinz59TCWwLj6OHj1abbpAJ4nO86233pIuXbpI/fr1VWeFhXMsFOIfGmH9uvWqHHSkc/4+R3JP5Aq2ieILZciQIa6iRfw9XjDr37dhgwtGE+PGjVPtM3nyZPWFidFqp06dFK+tW7eqrzm8BNgogxEVtpHDSMHQaQejoY0Cwk7+tgkGHxjY1IBnQGfwxfnpp5+qrz6dV1/1y37eKDrawg5AvMh4CYcPH670AiOrvn37KqMFGVP+mCKtW7dWm0BWrVqlDDEM15GcI5KekS7Jl1+uHnPrrbcqncLNiy++qMI8lYlOkPqlW8g+V93/YNQNh79dwszAwIED1caH0toUoxBsKMLIG2n1LIG1hlofdRg+buBgeFyd7sewOQk7AHOO5KjNZdiws3LlSjXqQ39Wkt4mJiZ6fLcGDRykPsywKQn/8B7ggxEf9tBN9LGoN/Qfs1LYDIIPNTyrpHcSRjqgLpBzuv7OR5aUD3O7r7zySklRxldffaUW87B2ALdp0yYjNTVVrW3cc889xt13320sWrRILVpiwR2bKrTDmsKqVatU/qZNm6oFzEOHDqlozMFigRJzy1hY1IvniMSaAxY7sdiIBXzMLWONwi7OdU7XHyUJhC688MILBubjrQ6Lx9hk8cEHH6hgrP2gjbA5BZspsGnmp59+UnGYS586dapax8ImCugBFm9zDueohehHHnnELBrtivZF+VhHxFx6YmKiMXbsWFU+1hhcHXSmX79+xvbt24tEQS+w7qQ3z2AeHu2NRWWsAWDThF5HwLNee/U1VSesF2DNbfLkyWpxGYVirRRrZK6bbTyVGUj9CoQu+KM/dsgTCB3WivHF///CuP7665Vu6TDoyRNPPGHMnDlTBXlqUyT45JNPVH+h11wRpnVwy5YtBtbI+/bta/Yl2MyDvsdVP5Hvww8/VGu00Dmsl/Xs2VOtO6EM7TzJ4+ndQn6s0Q4dOlStxWItGWv32m3evFm9N9jIhP0AeB/hsE7l7p3Uef25FtPhQDasPwIxT2AIFGtYP3qN8tYFvPT4ZxfnThZ34ZDbU5ynevmbz1OZOi4QuuCH+tgiS3nrsGaOazDb1Pocb59VnvK4ylfWe1cdtu3Uny20nkIElYDrtEdQH+ZF4e7kcReOIj3FeXqkv/k8lcm40BIozzb15lnepAktMe+fHp2XlxfYVS/vn82UQSKgd+74Wjx1wVdi9k/vry7Yv2YlS0gdLpmLk0Ohw7b9ZQong6XsJEACJEACgSNAQxU4liyJBEiABEggCARoqIIANVRF6m2i+gcrQyUHnxt6AtSF0LcBJSgbAasO01CVjSVzkwAJkAAJBJkADVWQAbN4EiABEiCBshGgoSobP+YmARIgARIIMoHo8+fPF/+tjiA/lMUHh8DevXtVwf7+fAl1ITjtEopSy6oLoZA5EM+kDgeCoj3KsOowR1T2aBNKQQIkQAIk4IaAow0VfjgWP/qojz53reNnn32mflrfNZz34UeAuhB+bRppNaIOu29xRxsqnA+DY8Dxa+YluQYNGsjNf765pKhiYfgJexzdgGNC6JxHgLrgvDajxEUJUIeL8rDeRVeqVEmdYIejEuzu9L56LWelioW//uQaruPxE/VXd79a33q84vwiHHLmavRQtv55fY8F2CASx1TA4ZA3fxx1oZAadcEf7bFHHupweOqw7UZUJ06cEJyoifOk/vOf/yjqGBLjlFQcNNajRw/ZtGmTCq8QU0FdceomjNK9996rDv8qbCoRTP3htFl9sBemCHGWCg4yw7lTOLcIDifEjh07VvlxuJlexNuwfoO0a9dOatWqpc5QghxwOBSvV69e6sTMnTt3OsaQKeEd9B91wUGNRVFLJEAdLhGLz4G2MVQ4AXPWrFnqcD0cyoUjx2EkcFovTknNyclRp2riEK+hQ4eqgw31rwPjoD4cnLd9+3YVB+WAw+gIB4phpHEq75Q66BDHQWOaDwcsqoO/1m+Q6jWqy7XXXqvy4OTZ2rVrq/IHDhqoTnTFYX84FRinwMLY4cA/nHqJU36bNWsmN9xwgyqP04Y+61+JGagLJWJhoIMIUIcD3Fg9e/bcJiLqcLiyniHiT/709HR1IBdkwKF3OHQPh39ph8MLEbdjxw4VlHcyTx2kd++996pDyRCHgxThcPAX7nGYF9zq1avV/d69e43FixcrPw7twzktOLxs9OjR6pAwHCi2cuVKFZ+Zmany4hC+jh07GjhMEQ4yWctGGA7swyGMOCQPcTgEcMKECeahYipjOf2H81sgA/79Jo/PmkJdSDCoCz6rja0yUIfDU4djsrKyGkDTWrVqFRKFe2/Ve7J8+XJ1xPHLL7+srlZB9u4r/Nugy3875ju2SqzgGHMclazXjvSaTPPmzdUuwM8+/0wGDxksF1S+QBV15vQZdWQybrp162YtXvl37Ngh+nh7HZmeni44SrrKb0cqJycnq6PNf977s04i+E09TFE2TGgoOIIda1yYUryx/43SsWZHM115e2JjY/16JHVBhLrgl+rYJhN1ODx1OORTf8NHDJd5c+cJpu+6du0q48ePl++//95U/MTEROXfuHGjuh7JOaIMGwxOwdkCFaa3p58rOCdZWVlSo0YNFV6pcuFmi7MFZ6VatWoqHMZk8eLFsnDhQlmwYIG88sorarpRd+4FBYVlYmpvxYoVapoQhcEwfv311yot7jHN99Zbb0nfvn2lZauWsm7dOpk4caJ8/PHH0vGPoTNSquIO/Y+64NCGo9gmAeqwiSKwnhYtWvyC6aIuXbqU0yRVyY/BlMuiRYuM1q1bq2nIRx99VE3P5efnGz169DCSkpKM++67z2jevLnRtGlTA9N5a9asUVNdiJs5c6bxl7/8Rd3rqcCPP/5Y3WNabPv27UZ8fLyRlpZmLFmyxFi7dq3x1FNPGRvWb1ACYQoyLi5OPQPpcY/0nTt3VlOENWrUMAYNGmRAHuSpU6eOKnvo0KHGe++9Z04Rlly74Idap/5GjRoF2Xx21AXqgs9KY7MM1OEw1WG7NKzuyrEmtGDBAmU4YYzg9u/bZ2BNKiEhwRg+fLixe/duFb5t2zajW7duxpgxY1Rc9+7dDRgn7axrVAjDOtPEiRONDh06KKM0YMCAIumXL1+uDNO8ufNUEZs3b1brZ8nJycaUKVPMtaeMjAxj4cKFBq52ceFkqDRT6oIm4ds1ELpgM/vjtTjsz37v/8KqP2vSpEm+HUZUvr2KxVNjg4TVHTx4UI2wMAI7ffq0NUr5XdPrBO7Cdbxdr9bOyd/NFNSFoq0bybrgtWWwWULqcHjqcMjXqAKl53qrui5v27Ztgi2iWIeqVKlwrUrH4eqaXse5C9fxvNqfgGsbUhfs32aUsCgB6nBRHjFFb8Pnrnfv3oJ/dCRAXaAOOJ1ApOtw2IyonK6IlJ8ESIAESKBkAtFZWVnqj43w80R04UEgLy/Pr4pQF/zCZutM/uqCrSvlQTjqsAc4Do2CDnNE5dDGo9gkQAIkECkEaKgipaVZTxIgARJwKAEaKoc2HMUmARIggUghEK3PMGrbtm2k1Dns63ny5Em/6khd8AubrTP5qwu2rpQH4ajDHuA4NAo6zBGVQxuPYpMACZBApBCgoYqUlmY9SYAESMChBGioHNpwFJsESIAEIoUADVUYtXTr1q1VbfQJx2FUNVbFRwLUBR+BMbntCFh1mIbKds1DgUiABEiABKwEaKisNOgnARLwlsDlIjJXRN4VkSYlZCprfAlFMihSCYTtj9JGaoOy3iRQTgTGisjdlmfdYPHDW9Z4l+J4G8kEOKIKo9aPji5sTq5RhVGj+lmVctaFn0sRs6zxpRTP6HAkYNVhjqjCsYVZJxIIPoH/Z3nEPyx+7S1rvC6HVxIQGioqAQmQgD8EfhCRezxkLGu8h6IZFWkEOPUXaS3O+pIACZCAwwjQUDmswTyJ27RpU0/RjIsgAtSFCGrsMK2qVYdpqMK0kVktEiABEggXAjRU4dKSrAcJkAAJhCkBGqowbVhWiwRIgATChUB0cnLyMVSGf3vj/CYtKChQldi7d69flaEu+IXNlpnKqgu2rJQXQlGHvYDkkCRWHY5KSEg4tW/fvgvj4+MlLS2txCpUq1atSHjjxo2L3Htz0zChoZks6dIk0x8qT3p6eqmPzs3NLTWNvwkC/WGQl5cnt912m1WcKOuNN37qgntKkaYL7knYO4Y67L59nKzD6MwM91Ur35i4uLgiD+zUqZN5X7duXdPv6qlVq5ZrkLo/fPhwieEI3Lp1qxmHTl67jIwM7Q3ItWbNmgEpx9tCcnJy5NJLL92RkZHR3Ns8lnTUBeqCRR0c6aUOh6EOR3Xo0OFMTk5OxUB30I5UcQcLXadOHTGMwne0YsWKr2VmZpY8PPZQR+qCBzgOigqELjioukVEpQ4XweHYG1cd9jQ9ZJ3va+Ohxt3cxHV1E45ga3nW53jIYosotZ73myRfe5AIf5Wv3Xfa4+e1viWfK6vfh4IiiAPXRBEZLCJrLPnK6rU+19p2ruVSF1yJiISbLhSvoTNCqMPF28kx/dn/ASVyDzRki6fYAAAAAElFTkSuQmCC" 29 } 30 }, 31 "cell_type": "markdown", 32 "metadata": { 33 "slideshow": { 34 "slide_type": "slide" 35 } 36 }, 37 "source": [ 38 "- Una **clase** representa una categoría, un concepto general, que agrupa objetos que cumplen una serie de condiciones\n", 39 "- Un **objeto** en una concreción, un ejemplo concreto, de uno de los elementos de una clase\n", 40 "\n", 41 "![image.png](attachment:image.png)" 42 ] 43 }, 44 { 45 "cell_type": "markdown", 46 "metadata": { 47 "slideshow": { 48 "slide_type": "slide" 49 } 50 }, 51 "source": [ 52 "Las clases son un medio que nos permite juntar datos con funcionalidad. Cuando creas una nueva clase estás creando un nuevo tipo de objeto, permitiendo que puedan crear nuevas instancias de este. Cada clase puede tener:\n", 53 "\n", 54 "- **Atributos**, que **mantienen su estado**, y\n", 55 "- **métodos**, definidos en las clases, que permiten **modificar el estado**." 56 ] 57 }, 58 { 59 "cell_type": "markdown", 60 "metadata": { 61 "slideshow": { 62 "slide_type": "slide" 63 } 64 }, 65 "source": [ 66 "### Nombres y objetos\n", 67 "\n", 68 "Un objeto puede tener diferentes nombres en diferentes lugares del programa. \n", 69 "\n", 70 "Esto es debido a que, como comentábamos al principio, Python internamente, **cuando asignamos un valora una variable, estamos en realidad asociando un nombre a un objeto en concreto**.\n" 71 ] 72 }, 73 { 74 "cell_type": "markdown", 75 "metadata": { 76 "slideshow": { 77 "slide_type": "slide" 78 } 79 }, 80 "source": [ 81 "Esto es similar al funcionamiento de los punteros en otros lenguajes de programación.\n", 82 "\n", 83 "Esto permite que pasar objetos a una función sea barato, ya que sólo se está pasando un \"puntero\" al objeto, de forma que si se modifica dentro de la función, el cambio se ve reflejado fuera.\n", 84 "\n", 85 "Esto se puede aplicar a todos los objetos, **excepto a los tipos básicos inmutables**, como los números, cadenas de texto y tuplas." 86 ] 87 }, 88 { 89 "cell_type": "code", 90 "execution_count": 1, 91 "metadata": { 92 "slideshow": { 93 "slide_type": "slide" 94 } 95 }, 96 "outputs": [], 97 "source": [ 98 "def modify_var(var, value):\n", 99 " var = value\n", 100 "\n", 101 "def modify_list(l, value):\n", 102 " l.append(value)" 103 ] 104 }, 105 { 106 "cell_type": "code", 107 "execution_count": 2, 108 "metadata": { 109 "slideshow": { 110 "slide_type": "slide" 111 } 112 }, 113 "outputs": [ 114 { 115 "name": "stdout", 116 "output_type": "stream", 117 "text": [ 118 "3\n", 119 "3\n", 120 "[1, 2, 3]\n", 121 "[1, 2, 3, 4]\n" 122 ] 123 } 124 ], 125 "source": [ 126 "var = 3\n", 127 "print(var)\n", 128 "modify_var(var, 4)\n", 129 "print(var)\n", 130 "\n", 131 "some_list = [1, 2, 3]\n", 132 "print(some_list)\n", 133 "modify_list(some_list, 4)\n", 134 "print(some_list)" 135 ] 136 }, 137 { 138 "cell_type": "markdown", 139 "metadata": { 140 "slideshow": { 141 "slide_type": "slide" 142 } 143 }, 144 "source": [ 145 "### Namespaces y scopes\n", 146 "\n", 147 "Antes de entrar en detalle en las clases, conviene entender qué son y cómo funcionan las **espacios de nombres** (namespaces) y las **reglas de alcance** (scopes) en Python." 148 ] 149 }, 150 { 151 "cell_type": "markdown", 152 "metadata": { 153 "slideshow": { 154 "slide_type": "slide" 155 } 156 }, 157 "source": [ 158 "Un **namespace** es un mapa que asocia nombres a objetos, implementado internamente usando diccionarios de Python.\n", 159 "\n", 160 "No existe ninguna relación entre los nombres definidos en diferentes **namespaces**." 161 ] 162 }, 163 { 164 "cell_type": "markdown", 165 "metadata": { 166 "slideshow": { 167 "slide_type": "slide" 168 } 169 }, 170 "source": [ 171 "Un **scope** es una región de un programa de Python desde donde un **namespace** se puede acceder directamente. En todo momento de la ejecución de un programa, hay siempre al menos tres **scopes** anidados:" 172 ] 173 }, 174 { 175 "cell_type": "markdown", 176 "metadata": { 177 "slideshow": { 178 "slide_type": "fragment" 179 } 180 }, 181 "source": [ 182 "1. El scope local, el más interno, que contiene las definiciones de los nombres locales.\n", 183 "2. El scope de cualquier función dentro de la que estemos, empezando por la más interna a la más externa.\n", 184 "3. El scope que contiene los nombres a nivel de módulo.\n", 185 "4. El scope que contiene los nombres reservados del lenguaje." 186 ] 187 }, 188 { 189 "cell_type": "markdown", 190 "metadata": { 191 "slideshow": { 192 "slide_type": "slide" 193 } 194 }, 195 "source": [ 196 "Hay formas de hacer referencia a scopes diferentes, usando `global` y `nonlocal`." 197 ] 198 }, 199 { 200 "cell_type": "code", 201 "execution_count": 3, 202 "metadata": { 203 "slideshow": { 204 "slide_type": "slide" 205 } 206 }, 207 "outputs": [ 208 { 209 "name": "stdout", 210 "output_type": "stream", 211 "text": [ 212 "Después de la asignación local: test spam\n", 213 "Después de la asignación nonocal: nonlocal spam\n", 214 "Después de la asignación global: nonlocal spam\n", 215 "En el scope global: global spam\n" 216 ] 217 } 218 ], 219 "source": [ 220 "def scope_test():\n", 221 " def do_local():\n", 222 " spam = \"local spam\"\n", 223 "\n", 224 " def do_nonlocal():\n", 225 " nonlocal spam\n", 226 " spam = \"nonlocal spam\"\n", 227 "\n", 228 " def do_global():\n", 229 " global spam\n", 230 " spam = \"global spam\"\n", 231 "\n", 232 " spam = \"test spam\"\n", 233 " do_local()\n", 234 " print(\"Después de la asignación local:\", spam)\n", 235 " do_nonlocal()\n", 236 " print(\"Después de la asignación nonocal:\", spam)\n", 237 " do_global()\n", 238 " print(\"Después de la asignación global:\", spam)\n", 239 "\n", 240 "scope_test()\n", 241 "print(\"En el scope global:\", spam)" 242 ] 243 }, 244 { 245 "cell_type": "code", 246 "execution_count": null, 247 "metadata": {}, 248 "outputs": [], 249 "source": [] 250 } 251 ], 252 "metadata": { 253 "celltoolbar": "Slideshow", 254 "kernelspec": { 255 "display_name": "Python 3", 256 "language": "python", 257 "name": "python3" 258 }, 259 "language_info": { 260 "codemirror_mode": { 261 "name": "ipython", 262 "version": 3 263 }, 264 "file_extension": ".py", 265 "mimetype": "text/x-python", 266 "name": "python", 267 "nbconvert_exporter": "python", 268 "pygments_lexer": "ipython3", 269 "version": "3.7.1" 270 } 271 }, 272 "nbformat": 4, 273 "nbformat_minor": 2 274}