Cómo crear una clase simple en Python

En un lenguaje orientado a objetos, una clase es un fragmento de código extensible que representa una plantilla para crear y usar los objetos de esa clase. Un objeto de una clase simplemente se refiere a una instancia de la clase definida.

Conceptos básicos de la clase Python

En el lenguaje de programación Python, cada dato se representa como una instancia de alguna clase. Si no está familiarizado con el idioma, consulte nuestra guía para principiantes de Python antes de continuar.

Una clase proporciona un conjunto de comportamientos en forma de funciones miembro (también conocidas como métodos), que tiene implementaciones que son comunes a todas las instancias de esa clase, y también determina la forma en que la información de estado para su instancia se representa en la forma de atributos.

Leer más: Métodos de clase en Python: las diferencias importantes

El siguiente código representa un ejemplo de una clase definida en Python. La clase definida en el código proporciona una implementación de una clase RaceCar.

Cada instancia de la clase proporciona un modelo simple para diferentes marcas de automóviles y contiene la siguiente información de estado: nombre del automóvil, nombre del conductor, número de placa del automóvil, velocidad actual, carga por exceso de velocidad y color.

Esta clase de automóvil modela un sensor especial dentro de cada automóvil que registra una multa de $ 50 contra el conductor del automóvil si excede el límite de velocidad legal de 140 millas por hora.

Ejemplo de una clase (clase de automóvil)

 
class Car:
#Constructor
#the init method is responsible for initialising the values of the instance #variables in the class.
def __init__(self, car_name, driver_name, license_plate_number,
current_speed, speeding_charge, colour):
self.car_name = car_name
self._driver_name = driver_name
self._license_plate_number = license_plate_number
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = colour
#Accessor methods
#The get_car_name method returns the name of the car
def get_car_name(self):
return self._car_name
#The get_driver_name method returns the name of the driver
def get_driver_name(self):
return self._driver_name
#The get_license_plate method returns the license plate of the car
def get_license_plate(self):
return self._license_plate
#The get_current_speed method returns the current speed at which the car is #moving
def get_current_speed(self):
return self._current_speed
#The get_speeding_charge method returns the total amount of money that the
#driver has to pay for over-speeding
def get_speeding_charge(self):
return self._speeding_charge
#The get_colour method returns the colour of our sweet ride!
def get_colour(self):
return self._colour
#Mutator methods
#The set_driver value changes the driver of our car.
def set_driver(self, new_driver):
self._driver_name = new_driver
#The speeding_ticket method ensures that the driver is charged 50 bucks when#he or she caught speeding above 140 miles per hour :(
def speeding_ticket(self, current_speed):
if current_speed <= 140:
return False
else:
self._speeding_charge += 50
return True
#The make_payment method ensures that the driver is able to pay for all the #amount that he or she owes for speeding ticket charges.
def make_payment(self, amount_paid):
self._speeding_charge -= amount_paid

Una explicación del ejemplo de la clase Python

El parámetro "Self"

En primer lugar, tenga en cuenta que existe una diferencia entre la firma del método declarada en la clase y la firma del método que utiliza el programador para llamar a la función. Por ejemplo, el método get_colour como se define en la clase toma un parámetro que es el parámetro 'self'.

Sin embargo, cuando el programador llama a este método en una instancia de la clase, no proporciona ningún parámetro. Este mismo fenómeno se puede observar en el método speeding_ticket que está definido para tomar dos parámetros en la clase (es decir, self y current_speed), pero el programador puede ejecutar este método proporcionando el valor solo para el parámetro 'current_speed'.

Esto se debe a que el propósito del parámetro 'self' proporcionado es vincular el método a la instancia del objeto en el que se llamó y no es un valor que deba dar el programador.

El constructor

Un constructor de una clase se refiere al método de la clase que un usuario puede llamar para crear una instancia de objeto de esa clase. En la clase Car, el usuario puede crear una instancia de objeto utilizando la siguiente sintaxis:

 #creating our very own Bugatti :)
Car(“Bugatti”, “David Sasu”, 90828, 0, 0, "Cherry Red")

La ejecución de este código da como resultado una llamada al método __init__ en la clase Car. La responsabilidad de este método es generar un objeto de coche de crédito recién creado con los valores de instancia proporcionados. Cada objeto de la clase Car está constituido por seis variables de instancia que son:

  • _car_name
  • _nombre del conductor
  • _placa
  • _velocidad actual
  • _speeding_charge
  • _color

Métodos de acceso

Estos son métodos que están escritos para acceder a la información de estado de una instancia de objeto. En la clase Car, los métodos de acceso que se escribieron son:

  • get_car_name
  • get_driver_name
  • get_license_plate
  • get_current_speed
  • get_speeding_charge
  • get_colour

Métodos de mutadores:

Estos son métodos que están escritos para alterar la información de estado de una instancia de objeto. En la clase Car, los métodos mutadores que se escribieron son:

  • set_driver
  • multa por exceso de velocidad
  • hacer el pago

El concepto de encapsulación

"Encapsulación" es un término que se utiliza para describir un principio de diseño orientado a objetos en el que los componentes de un programa no deben revelar los detalles internos de sus respectivas implementaciones. Para aumentar su comprensión del concepto de encapsulación, consulte nuestro artículo sobre encapsulación.

Comprobación de errores

Nuestra implementación de la clase Car no es robusta, ya que es probable que se bloquee o funcione mal dependiendo de la entrada que reciba del programador.

Primero, tenga en cuenta que no verificamos los tipos de los parámetros de los métodos speeding_ticket y make_payment, ni verificamos los tipos de ninguno de los parámetros del constructor. Esto podría provocar que el programa se bloquee si el usuario proporciona un argumento que no se esperaba. Por ejemplo, si el usuario realiza una llamada como speeding_ticket ("chips ahoy"), el programa se bloqueará porque el tipo que esperaba el método era un número entero y no una cadena.

Ahora comprende los conceptos básicos de la clase Python

En este artículo, se le presentó el concepto de una clase Python y un objeto de clase Python. También se le han presentado las ideas sobre las que se construye una clase de Python, tales como: encapsulación, el identificador 'propio', métodos de acceso y métodos de mutación.

Con esta información, debería poder crear una clase Python simple por su cuenta y probarla