Python super

Funciones y métodos de Python

El método Python super () le permite acceder a métodos desde una clase principal desde dentro de una clase secundaria. Esto ayuda a reducir la repetición en su código. super () no acepta ningún argumento.

Una característica fundamental de los lenguajes de programación orientados a objetos como Python es la herencia. La herencia es cuando una nueva clase usa código de otra clase para crear la nueva clase.

Cuando está heredando clases, es posible que desee obtener acceso a los métodos de una clase principal. Ahí es donde entra la función super () .

Este tutorial discutirá, con ejemplos, los conceptos básicos de la herencia en Python. Luego, hablaremos sobre cómo usar la función super () para heredar valores y métodos de una clase principal.




¿Qué es Python Super?

El método Python super () le permite acceder a métodos en una clase principal. Puede pensar en super () como una forma de saltar para ver los métodos en la clase de la que se hereda otra clase.

Aquí está la sintaxis del método super ():

 class Food (): def __init __ (self, name): self.name = name class Cheese (Food): def __init __ ( self, brand): super () .__ init __ () self.brand = brand 

El método super () no acepta ningún argumento. Usted especifica el método que desea heredar después del método super (). La clase Python de Cheese anterior hereda los valores del método __init __ () de la clase Food. Llamamos al método de la clase super () para heredar valores de la clase Comida.

herencia de Python se refiere a un proceso donde una nueva clase usa código de una clase existente para definir la estructura de la nueva clase.

El 81% de los participantes afirmaron que se sentían más seguros sobre sus perspectivas laborales después de asistir a un bootcamp. Asigne a un bootcamp hoy mismo.

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

Una forma de pensar en la herencia es considerar cómo los hijos heredan las características de sus padres. Un niño puede tener el mismo color de cabello que sus padres y también heredar su apellido de sus padres.

En Python, hay dos tipos de clases:

  • Clases secundarias (o "subclases") heredan métodos y variables. Las clases secundarias a veces se denominan clases hermanas.
  • Las clases principales (o & ldquo; clases base & rdquo;) son clases cuyos valores se pueden heredar.




super () Python: hereda de __init __ ()

Supongamos que estamos creando un sistema de cuentas bancarias que rastrea las credenciales de las personas que tienen una cuenta en un banco. Para hacerlo , queremos crear una clase que almacene datos para cuentas corrientes. Podríamos hacerlo usando este código:

 class CheckingAccount: def __init __ (self, name, balance): self.name = name self.balance = balance def checkBalance (self): print ("Balance:", self.balance) 

Este código crea un plano de una cuenta corriente.

Ahora, supongamos que queremos crear una clase que almacene el plano de las cuentas bancarias secundarias, que llamaremos ChildAccount . La clase debe basarse en la clase CheckingAccount que definimos anteriormente, para ello podemos hacer uso de la función super ()

super () le permite acceder a los métodos de una clase principal dentro de una clase secundaria.

En nuestro ejemplo, nuestra clase principal se llama CheckingAccount , y nuestra clase secundaria se llama ChildAccount CheckingAccount crea el plano de una cuenta bancaria y ChildAccount hereda valores de CheckingAccount para crear su propia clase.

Ahora , supongamos que queremos que la clase ChildAccount herede los valores almacenados en nuestra CheckingAccount . Pero también queremos que esta cuenta almacene un nuevo valor llamado is_child , que debería ser igual a True por defecto.

Podríamos crear nuestra nueva ChildAccount clase usando este código:

 class ChildAccount (CheckingAccount): def __init __ (self, name, balance, is_child = True): self.is_child = is_child super () .__ init __ (nombre, saldo) 

Este código crea un plano para nuestra nueva clase ChildAccount . Usamos el método super () para heredar el nombre y los valores del saldo de la clase CheckingAccount . Especificamos CheckingAccount como la clase padre entre paréntesis en la primera línea de nuestra clase.

Esto muestra que super () le permite heredar todos los valores de otra clase. Pero, en nuestro código, también hemos declarado un nuevo valor llamado is_child . Este valor solo será accesible para cualquier ChildAccount porque lo declaramos en la clase ChildAccount .


Para crear una instancia de nuestra clase para el titular de una cuenta infantil, podemos usar este código:

 lynn = ChildAccount (" Lynn ", 200) print (lynn.name) print (lynn.balance) print (lynn.is_child) 

Nuestro devuelve el código:

 Lynn 200 True 

Hemos declarado una instancia de la clase ChildAccount asignada a la variable de Python lynn . lynn es un objeto de clase porque hemos declarado el valor de lynn usando un objeto.

La cuenta de Lynn tiene $ 200 y el valor de is_child es True por defecto. Luego, imprimimos los valores de nombre , balance , is_child asociados con Lynn & rsquo; s acc ount. Imprimimos estos valores en la consola usando el método Python print () .

Porque heredamos name y balance de la clase CheckingAccount , pudimos usarlos en nuestro código. Pero, la cuenta de Lynn también tiene un valor establecido para is_child , que se establece en True de forma predeterminada para todas las instancias de ChildAccount .




super () Python: Inherit Methods

super () le permite heredar clases usando herencia de un solo nivel & mdash; heredando una clase de una clase principal. O puede usar super () con herencia multinivel. Para este ejemplo, nos centraremos en la herencia de un solo nivel con super () .

En nuestro ejemplo anterior, usamos super () para heredar los valores almacenados en la clase CheckingAccount y hacerlos accesibles en la clase ChildAccount . Pero, ¿qué pasa si queremos heredar un método y modificar su respuesta?

"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é mi sueño trabajo que se alinea con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Volvamos a nuestro Clase CheckingAccount de antes:

 class CheckingAccount: def __init __ (self, name, balance): self.name = name self.balance = balance def checkBalance (self): print ("Balance:", self.balance) 

En esta clase, hemos definido el modelo para los valores que la clase debe almacenar & mdash ;  nombre y saldo . Definimos un método llamado checkBalance () que permite al usuario verificar su saldo.


Ahora, suponga que queremos que checkBalance () sea accesible para nuestra ChildAccount . También queremos imprimir un mensaje que indique & ldquo; ¡Eres el titular de una cuenta infantil! & rdquo; Esto debería aparecer antes de que el saldo del usuario se imprima en la consola.

Podríamos acceder a nuestros métodos heredados de la siguiente manera:

 class ChildAccount (CheckingAccount): def __init __ (self, name, balance, is_child = True): self.is_child = is_child super () .__ init __ (nombre, saldo) def checkBalance (self): print ("¡Eres el titular de una cuenta infantil!") super (). checkBalance () 

Tenemos declaró una nueva versión del método checkBalance () en la clase ChildAccount . Esta versión imprime primero & ldquo; ¡Usted es el titular de una cuenta infantil! & rdquo; a la consola. Luego, nuestro código que utiliza super () para ejecutar el método checkBalance () de la clase & rsquo; padre.

En este caso, cuando se ejecuta super (). checkBalance () , la función checkBalance () de CheckingAccount . Esto imprime el saldo del usuario en la consola.

Ahora, intentemos acceder a nuestro método checkBalance () para la cuenta de Lynn:

 lynn = ChildAccount ("Lynn", 200) lynn.checkBalance () 

Nuestro devuelve el código:

 ¡Eres un titular de una cuenta infantil! Saldo: 250 

Cuando llamamos al método lynn.checkBalance () , el código en nuestro método ChildAccount.checkBalance () es ejecutar, y luego el superobjeto ejecuta el código en el método CheckingAccount.checkBalance () .

La función super () nos permite usar métodos, sin dejar de ser capaz de sobrescribir esos métodos en nuestras clases secundarias.




Conclusión

La función Python super () le permite heredar métodos de un padre clase. La función super () te ayuda a escribir código más legible porque puedes reutilizar código de funciones existentes.

Este tutorial trata, con ejemplos, cómo usar la función super () para heredar valores y métodos de una clase padre. ¡Ahora está equipado con el conocimiento que necesita para comenzar a usar la función super () como un profesional de Python!

Para obtener más recursos sobre la programación de Python, lea nuestro Guía de cómo aprender Python .





Python super: StackOverflow Questions