herencia de python

| | | | | | | | | | | | | | | | | |

La herencia de Python es cuando una subclase usa el còdigo de otra clase. La herencia es una caracterìstica esencial en lenguajes orientados a objetos como Python que hace que la codificaciòn sea más fácil y eficiente.

Python es un lenguaje orientado a objetos, lo que significa que admite la creaciòn de bloques de còdigo reutilizables para ayudar a que el còdigo sea más eficiente. Una de las formas en que esto sucede es a través de la herencia, donde una subclase puede usar còdigo de otra clase.

Por ejemplo, puede tener una clase que almacena " cuentas bancarias & rdquo ;, y desea crear una subclase que almacena " cuentas bancarias de oro " que puede hacer referencia a atributos en las " cuentas bancarias " clase existente.

En este tutorial, vamos a desglosar los conceptos básicos de la herencia en Python. También vamos a discutir còmo funcionan las clases de Python padre e hijo, y còmo anular atributos y métodos cuando está trabajando con objetos de clases.

Herencia de Python

La herencia es un término que se usa para describir una clase de Python dentro de otra clase. Las clases llamadas subclases o clases secundarias pueden heredar valores de clases principales , de forma similar a como los ni√±os heredan caracterìsticas de sus padres en el mundo real.

La herencia es √∫til porque nos permite crear subclases que tienen los mismos tipos de valor que una clase principal, sin tener que declarar esos tipos varias veces.

Parent Clases

Las clases principales (también llamadas clases base crean la estructura maestra a la que pueden acceder las subclases. Podemos crear m√∫ltiples subclases sin tener que declarar el mismo conjunto de valores comunes sobre el derivado métodos de clase de la clase principal.

Usemos un ejemplo para ilustrar còmo funcionarìa esto en acciòn. Digamos que tenìamos un programa que funciona con dos tipos de cuentas bancarias diferentes: principal y secundaria.

El 81% de los participantes afirmaron que se sentìan más seguros sobre sus perspectivas laborales en tecnologìa después de asistir a un bootcamp. amp hoy.

El graduado promedio de bootcamp pasò menos de seis meses en la transiciòn de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Ambas cuentas son cuentas bancarias, por lo que tendrán valores similares. Pero cada una de estas cuentas puede requerir su propia informaciòn √∫nica. Por ejemplo, la cuenta de un padre puede admitir un sobregiro, mientras que la cuenta del ni√±o solo puede funcionar con su saldo.

Por lo tanto, si quisiéramos crear un programa con estos valores, primero definirìamos una clase para nuestra cuenta bancaria (una clase principal) y luego crear clases secundarias para los dos tipos de cuentas bancarias & mdash; principal y secundaria & mdash; que queremos respaldar.

A continuaciòn, se muestra un ejemplo de còmo declarar una clase principal para una cuenta bancaria:

Hemos creado la clase BankAccount que almacena tres valores: nombre, apellido y saldo. También podemos agregar métodos a nuestra clase, asì:

Nuestra clase ahora almacena tres valores, asì como dos métodos nuevos: detalles y saldo. El método detalles se puede utilizar para averiguar el nombre y apellido del titular de la cuenta, y el método balance devolverá el saldo del titular de la cuenta.

Cada método y variable que declaramos en nuestra clase BankAccount será accesible en nuestra clase secundaria.

Para ilustrar nuestra clase en acciòn, creemos una cuenta bancaria de ejemplo. Podemos hacerlo usando el siguiente còdigo:

Esto creará una cuenta para John Appleseed que contiene $ 100. Ahora que tenemos nuestra cuenta lista, podemos comenzar a hacer referencia a ella como lo harìamos con cualquier otra clase. Aquì hay un ejemplo de nosotros ejecutando el método getBalance () dentro de nuestra cuenta bancaria para averiguar cuánto dinero que tenemos:

Nuestro programa devuelve lo siguiente:

Clases secundarias

En el ejemplo anterior, declaramos una clase principal que almacena cuentas bancarias. Pero, ¿qué pasa si queremos almacenar informaciòn sobre un tipo especìfico de cuenta, como la cuenta de un ni√±o menor de 18 a√±os? Ahì es donde entran las clases secundarias.

Las clases secundarias, o subclases, heredan valores de la clase principal. Esto significa que cada clase secundaria podrá hacer referencia a los métodos y variables que declaramos en nuestra clase principal.

Entonces, digamos que queremos crear una clase secundaria para una ChildBankAccount . Esta cuenta debe poder devolver la informaciòn de la cuenta bancaria de un usuario, su nombre y saldo, y también debe tener un nuevo valor llamado restringido . Este valor se almacenará en la cuenta de un ni√±o porque es menor de 18 a√±os y no es elegible para una cuenta bancaria completa.

Para crear una clase para ni√±os, podemos usar el siguiente còdigo:

El ChildBankAccount < La clase / code> se convierte en hijo de la clase BankAccount porque BankAccount está entre paréntesis. Si queremos que nuestra clase secundaria tenga exactamente los mismos valores que nuestra clase principal & mdash; BankAccount & mdash; podemos usar la palabra clave pass como esta:

Pero como discutimos anteriormente, nuestra cuenta secundaria necesitará para almacenar un valor especial: una variable que dice que la cuenta del usuario está restringida.

Para lograr este objetivo, vamos a agregar un nuevo valor llamado restringido a nuestro clase infantil. Podemos hacer esto usando el siguiente còdigo:

Ahora, analicemos nuestro còdigo.

En el còdigo anterior, indicamos que queremos que nuestras ChildBankAccounts contengan cuatro valores: nombre, apellido, equilibrado y restringido.

"Career Karma entrò en mi vida cuando más lo necesitaba y rápidamente me ayudò a combinar con un bootcamp. Dos meses después de graduarme, encontré el trabajo de mis sue√±os que se alineaba con mis valores y objetivos en vida! "

Venus, ingeniero de software de Rockbot

Los primeros tres & mdash; nombre, apellido y saldo & mdash; son los mismos que nuestros valores de clase padre pero restringidos es nuevo y exclusivo de nuestra clase para niños. De forma predeterminada, restringido se establece en True .

Entonces, si creamos una BankAccount estándar (no una ChildBankAccount ), no podremos acceder al valor restringido . Del mismo modo, no podremos acceder al método isRestricted a menos que creemos una ChildBankAccount .

Aquì tienes un ejemplo de còmo creamos una ChildBankAccount y usando los métodos getBalance () y isResticted () para aprender más sobre nuestra clase:

Nuestro còdigo devuelve lo siguiente:

Como puede ver, nuestro programa primero define una nueva ChildBankAccount para Bill Appleseed , cuya cuenta tiene $ 100. Luego, nuestro programa ejecuta el método getBalance () en nuestra clase, que devuelve el saldo del usuario. getBalance () se declara en nuestra clase principal, BankAccount , pero es accesible para ChildBankAccount a través de herencia .

Nuestro programa también ejecuta el método isRestricted () , que establece que la cuenta del ni√±o está restringida porque es menor de 18 a√±os. Esta clase está declarada en ChildBankAccount , sin embargo, lo que significa que no es accesible para nuestra clase padre BankAccount . Si quisiéramos crear una BankAccount restringida, necesitarìamos cambiar la clase principal.

Redefiniendo los métodos principales

En nuestro ejemplo anterior, declaramos una clase principal llamada BankAccount que almacena informaciòn para cuentas bancarias. También creamos una clase secundaria llamada ChildBankAccount que almacena informaciòn para los titulares de cuentas menores de 18 a√±os. Esta clase heredò los métodos de la clase BankAccount y también creò el isRestricted () .

Pero, ¿qué pasa si queremos modificar un método de clase padre existente? Supongamos que queremos que nuestro saldo de BankAccount devuelva un mensaje con su saldo y un mensaje que indique Usted es elegible para un sobregiro , pero no queremos que esto aparezca para Titulares de ChildBankAccount .

Para hacer esto, necesitamos anular nuestro método principal.

Aquì está el còdigo para nuestro método principal revisado, BankAccount , que ahora imprime un mensaje a los titulares de cuentas para decirles que son elegibles para un sobregiro cuando verifican su saldo:

Ahora, si creamos una nueva BankAccount para John Appleseed e imprima su saldo, veremos un mensaje que indica Usted es elegible para un sobregiro . Aquì hay un ejemplo de còmo declaramos una cuenta nueva y verificamos su saldo:

Nuestro còdigo devuelve lo siguiente:

Pero este cambio también significa que nuestra ChildBankAccount , que hereda sus valores de BankAccount , también verá el mensaje. Este es un ejemplo de còmo creamos una ChildBankAccount y verificamos su saldo ahora que nuestra clase principal BankAccount ha cambiado:

Nuestro còdigo devuelve:

Debido a que generalmente no se permiten sobregiros a los ni√±os, tendremos que hacer un cambio en nuestro còdigo. Ahora, para hacerlo, tenemos que modificar nuestra clase ChildBankAccount y declarar una nueva funciòn getBalance () .

Aquì está el còdigo para nuestra ChildBankAccount de arriba:

Necesitamos cambiar este còdigo para agregar una nueva funciòn: getBalance () . Esta funciòn funcionará de la misma manera que la que declaramos en nuestra clase principal, pero no incluirá el mensaje sobre sobregiros. Aquì está el còdigo que agregarìamos para declarar nuestra nueva funciòn:

Intentemos recuperar el saldo de nuestro hijo ahora:

Nuestro còdigo devuelve lo siguiente:

En En el ejemplo anterior, hemos sobrescrito el método getBalance () en la clase secundaria ChildBankAccount . Nuestro nuevo método getBalance () para ChildBankAccount solo muestra el saldo del usuario. Pero en nuestra clase BankAccount , el método getBalance () muestra tanto el saldo del usuario como el mensaje Usted es elegible para un sobregiro .

La anulaciòn de los métodos principales puede ser √∫til cuando tiene varios métodos secundarios que pueden usar métodos similares a los de sus padres, pero requieren que se realicen sus propios cambios especìficos. Como en el caso anterior, queremos que nuestras cuentas bancarias principales vean un mensaje de sobregiro, pero no nuestras cuentas bancarias secundarias, por lo que anulamos nuestro método principal en ChildBankAccount .

Conclusiòn < / h2>

La herencia se usa en la programaciòn orientada a objetos para ayudarlo a crear subclases que pueden almacenar valores ya declarados en una clase principal. Esto es √∫til cuando está creando clases similares que almacenarán valores similares porque puede usar la herencia para crear esas clases sin repetir su còdigo varias veces.

En este tutorial, exploramos el rol de la herencia en Python . También discutimos còmo funcionan la herencia y las clases padre e hijo, luego exploramos còmo anular los métodos padre. ¬°Ahora estás listo para trabajar con clases y herencia como un experto en Python!