Python tiene un excelente soporte para la programación orientada a objetos. Aprenda lo que eso significa, por qué es útil y cómo puede trabajar con objetos en Python. La programación orientada a objetos (OOP) es una forma de programación centrada en objetos: pequeñas unidades que combinan datos y código.
Importante para los que se desean aprender Python
En realidad para empezar un curso de Python, hay muchas opciones sin embargo podemos recomendar este grupo de cursos para los que se inician o quieren fortalecer sus capacidades en python desde un nivel básico a escalar a niveles avanzados, por ejemplo tenemos: Python de Cero a Experto,o también puede pueden empezar poco a poco en Curso Programación de Python y este que puede ser más completo: Programación en Python.
Simula fue el primer lenguaje de programación orientada a objetos creado para la simulación de modelos físicos. Con OOP, puede definir clases que actúan como plantillas para objetos de tipos específicos.
Los elementos centrales de OOP son clases, objetos, métodos y atributos. OOP utiliza estos elementos para lograr objetivos fundamentales: encapsulación, abstracción, herencia y polimorfismo.
Python tiene un excelente soporte para la programación orientada a objetos. Si se pregunta acerca de la programación orientada a objetos o cómo usarla en Python, siga leyendo para conocer los detalles.
¿Qué es la programación orientada a objetos en Python?
Python es un lenguaje de programación de propósito general que admite la programación orientada a objetos. Su infraestructura central apunta al diseño o aplicaciones de construcción de objetos y clases. El uso de OOP hace que el código Python sea más limpio y claro. También facilita el mantenimiento y la reutilización del código.
Aquí hay un ejemplo para mostrarle por qué usar OOP en Python.
jeans = [30, true, "Denim", 59]
En este ejemplo, los jeans contienen una lista de valores que representan el precio, si el artículo está en oferta, su material y su costo. Este es un enfoque que no es de programación orientada a objetos y causa algunos problemas. Por ejemplo, no hay explicación de que jeans [0] se refiera al tamaño. Esto es muy poco intuitivo en comparación con un enfoque OOP que se referiría a un campo con nombre: jeans.size .
Este código de ejemplo no es muy reutilizable ya que el comportamiento en el que se basa no es detectable. Usando OOP, puede crear una clase para evitar este problema.
Cómo definir una clase en Python
Para crear una clase en Python, use la palabra clave "clase" seguida de su nombre elegido. Aquí hay un ejemplo que define una clase llamada Myclass .
class MyClass:
x = 2
p1 = MyClass()
print(p1.x)
Definamos una clase, Pant , para representar varios tipos de pantalones. Esta clase contendrá el tamaño, el estado de venta, el material y el precio. De forma predeterminada, inicializa esos valores en Ninguno.
class Pant:
# Define the properties and assign None value
size = None
onsale = None
material = None
price = None
Cómo crear un objeto en Python
Ahora inicialicemos un objeto de la clase Pant. Primero, definiremos el método inicializador que tiene el nombre predefinido _init_ . Una vez que lo defina, Python llamará automáticamente a este método cada vez que cree un objeto a partir de esa clase.
En segundo lugar, un parámetro de self particular permitirá que el método de inicialización seleccione un nuevo objeto.
Finalmente, después de definir el inicializador, crearemos un objeto llamado jeans , usando la sintaxis [objectName] = Pant () .
class Pant:
# Define the initializer method
def __init__(self, size, onsale, material, price):
self.size = size
self.onsale = onsale
self.material = material
self.price = price
# Create an object of the Pant class and set each property to an appropriate value
jeans = Pant(11, False, "Denim", 81)
Utilice atributos y métodos para definir propiedades y comportamientos
Los objetos en Python pueden usar dos tipos diferentes de atributos: atributos de clase y atributos de instancia.
Los atributos de clase son variables o métodos que comparten todos los objetos de esa clase. Por el contrario, los atributos de instancia son variables que son únicas para cada objeto: la instancia de una clase.
Creemos un método de instancia para interactuar con las propiedades del objeto.
class Pant:
# Define the initializer method
def __init__(self, size, onsale, material, price):
self.size = size
self.onsale = onsale
self.material = material
self.price = price
# Instance method
def printinfo (self):
return f"This pair of pants is size {self.size}, made of {self.material}, and costs {self.price}"
# Instance method
def putonsale (self):
self.onsale = True
jeans = Pant(11, False, "Denim", 81)
print(jeans.printinfo())
jeans.putonsale()
print(jeans.onsale)
Aquí, el primer método, printinfo () , usa todas las propiedades excepto onsale . El segundo método, putonsale () , establece el valor de la propiedad onsale . Observe cómo estos dos métodos de instancia utilizan la palabra clave self . Esto se refiere al objeto particular (o instancia) utilizado para invocar el método.
Cuando llamamos a putonsale () , este método usa el parámetro self para cambiar el valor de ese objeto específico. Si hubiera creado otra instancia de Pant , por ejemplo, leggings, esta llamada no lo afectaría. Una propiedad de instancia de un objeto es independiente de cualquier otro.
Puede expandir el ejemplo anterior agregando una subcategoría de la clase Pant . En la programación orientada a objetos, esto se conoce como herencia. La expansión de la clase definirá propiedades o métodos adicionales que no están en la clase principal.
Definamos Leggings como una subclase y heredemos de Pant .
# Leggings is the child class to parent class Pant
class Leggings(Pant):
def __init__(self, size, onsale, material, price, elasticity):
# Inherit self, size, onsale, material, and price properties
Pant.__init__(self, size, onsale, material, price)
# Expand leggings to contain extra property, elasticity
self.elasticity = elasticity
# Override printinfo to reference "pair of leggings" rather than "pants"
def printinfo(self):
return f"This pair of leggings is size {self.size}, made of {self.material}, and costs {self.price}"
leggings = Leggings(11, False, "Leather", 42, True)
print(leggings.printinfo())
El nuevo método de inicialización toma las mismas propiedades que la clase Pant y agrega una propiedad de elasticidad única. Puede ampliar una clase para reutilizar la funcionalidad existente y reducir la longitud del código. Si su clase Leggings no heredó de la clase Pant, necesitaría reproducir el código existente, solo por un pequeño cambio. Notará estos beneficios más cuando trabaje con clases más grandes y complicadas.
La función isinstance () comprueba si un objeto es una instancia de una clase específica o cualquiera de sus clases ancestrales. Si el objeto es del tipo dado, o un tipo que hereda de él, la función devuelve True. De lo contrario, devolverá False.
# Dummy base class
class Pant:
None
# Dummy subclass that inherits from Pant
class Leggings(Pant):
None
pants = Pant()
leggings = Leggings()
print(isinstance(leggings, Pant))
print(isinstance(pants, Leggings))
Tenga en cuenta que Python considera el objeto leggings , de tipo Leggings, una instancia de Pant, la clase principal de Leggings. Pero un objeto de pantalones no es una instancia de la clase Leggings.
Python es la introducción perfecta a la programación orientada a objetos
Python ha ganado popularidad debido a su sintaxis simple y fácil de entender en comparación con otros lenguajes de programación. El lenguaje se diseñó en torno a la programación orientada a objetos, por lo que es una gran herramienta para aprender el paradigma. La mayoría de las grandes empresas de tecnología hacen uso de Python en algún momento de su pila de tecnología, y las perspectivas son buenas para los programadores de Python.
Si está ansioso por hacer una carrera en el sector del desarrollo, Python es un excelente lugar para comenzar. Asegúrese de tener un conocimiento sólido de los principios básicos: ¡la programación orientada a objetos es solo el comienzo!
Fuente: makeuseof.com