Una guía para principiantes de la programación orientada a objetos (OOP) de Python
La programación es un arte. Y como en el arte, seleccionar los pinceles y pinturas adecuados es fundamental para producir las mejores obras. La programación orientada a objetos de Python es una de esas habilidades.
Elegir el lenguaje de programación correcto es una parte crucial de cualquier proyecto y puede conducir a un desarrollo fluido y agradable o a una completa pesadilla. Por lo tanto, sería mejor si utilizara el lenguaje que mejor se adapte a su caso de uso.
Esa es la razón principal para aprender programación orientada a objetos en Python, que también es uno de los lenguajes de programación más populares.
¡Aprendamos!
Un programa de ejemplo de Python
Antes de profundizar en el asunto, permítanos hacerle una pregunta: ¿alguna vez ha escrito un programa en Python como el que se muestra a continuación?
secret_number = 20
while True:
number = input('Guess the number: ')
try:
number = int(number)
except:
print('Sorry that is not a number')
continue
if number != secret_number:
if number > secret_number:
print(number, 'is greater than the secret number')
elif number < secret_number:
print(number, 'is less than the secret number')
else:
print('You guessed the number:', secret_number)
break
Este código es un simple adivinador de números. Intente copiarlo en un archivo Python y ejecútelo en su sistema. Cumple perfectamente su propósito.
Pero aquí viene un gran problema: ¿y si le pedimos que implemente una nueva función? Podría ser algo simple, por ejemplo:
«Si la entrada es un múltiplo del número secreto, dale una pista al usuario».
El programa se volvería complejo y pesado rápidamente a medida que aumentara el número de características y, por lo tanto, el número total de condicionales anidados.
Ese es precisamente el problema que la programación orientada a objetos intenta resolver.
Requisitos para aprender Python OOP
Antes de dedicarse a la programación orientada a objetos, le recomendamos encarecidamente que tenga un conocimiento firme de los conceptos básicos de Python.
La clasificación de temas considerados “básicos” puede resultar difícil. Debido a esto, hemos diseñado una hoja de trucos con todos los conceptos principales necesarios para aprender programación orientada a objetos en Python.
- Variable: Nombre simbólico que apunta a un objeto específico (veremos qué objetos significa a través del artículo).
- Operadores aritméticos: Suma (+), resta (-), multiplicación
- división (/), división entera (//), módulo (%). Tipos de datos integrados:
- Numérico (enteros, flotantes, complejos), Secuencias (cadenas, listas, tuplas), Booleanos (Verdadero, Falso), Diccionarios y Conjuntos. Expresiones booleanas: Expresiones en las que el resultado es Cierto o
- Falso. Condicional: Evalúa una expresión booleana y realiza algún proceso en función del resultado. Manejado por si / si no
- declaraciones. Círculo: Ejecución repetida de bloques de código. Puede ser por o tiempo
- bucles. Funciones: Bloque de código organizado y reutilizable. Los creas con la palabra clavedef
- . Argumentos:
sum([1, 2, 4])
- Objetos pasados a una función. Por ejemplo:Ejecutar una secuencia de comandos de Python
- : Abra una terminal o línea de comando y escriba «python
. « Abrir un shell de Pythonpython: Abra una terminal y escribapython3o
dependiendo de su sistema.
Ahora que tiene estos conceptos muy claros, puede avanzar en la comprensión de la programación orientada a objetos.
¿Qué es la programación orientada a objetos en Python?
La programación orientada a objetos (OOP) es un paradigma de programación en el que podemos pensar en problemas complejos como objetos.
Un paradigma es una teoría que proporciona la base para resolver problemas.
Entonces, cuando hablamos de POO, nos referimos a un conjunto de conceptos y patrones que usamos para resolver problemas con objetos.
Una calculadora puede ser un objeto.
Una calculadora puede ser un objeto.
Como puede notar, los datos (atributos) son siempre sustantivos, mientras que los comportamientos (método) son siempre verbos.
Esta compartimentación es el concepto central de la programación orientada a objetos. Construye objetos que almacenan datos y contienen tipos específicos de funcionalidad.
¿Por qué utilizamos la programación orientada a objetos en Python?
OOP le permite crear software seguro y confiable. Muchos frameworks y bibliotecas de Python utilizan este paradigma para construir su base de código. Algunos ejemplos son Django, Kivy, pandas, NumPy y TensorFlow.
Veamos las principales ventajas de usar OOP en Python.
Ventajas de Python OOP
Las siguientes razones le harán optar por utilizar la programación orientada a objetos en Python.
Todos los lenguajes de programación modernos utilizan OOP
Este paradigma es independiente del idioma. Si aprende OOP en Python, podrá usarlo en lo siguiente:
Todos estos lenguajes están orientados a objetos de forma nativa o incluyen opciones para la funcionalidad orientada a objetos. Si desea aprender alguno de ellos después de Python, será más fácil: encontrará muchas similitudes entre los lenguajes que trabajan con objetos.
OOP le permite codificar más rápido
Codificar más rápido no significa escribir menos líneas de código. Significa que puede implementar más funciones en menos tiempo sin comprometer la estabilidad de un proyecto.
La programación orientada a objetos le permite reutilizar código mediante la implementación de la abstracción. Este principio hace que su código sea más conciso y legible.
La productividad disminuye con código no legible
La productividad disminuye con código no legible
Verá más sobre el principio de abstracción más adelante.
OOP te ayuda a evitar el código espagueti
¿Recuerda el programa de adivinación de números al comienzo de este artículo? Si sigue agregando funciones, tendrá muchas si
declaraciones en el futuro. Esta maraña de interminables líneas de código se llama código espagueti y debe evitarlo tanto como sea posible. OOP nos da la posibilidad de comprimir toda la lógica en objetos, evitando así piezas largas de anidadassi es
.
OOP mejora su análisis de cualquier situación
Una vez que adquiera algo de experiencia con la programación orientada a objetos, podrá pensar en los problemas como objetos pequeños y específicos.
Esta comprensión conduce a una rápida inicialización del proyecto.
Programación estructurada frente a programación orientada a objetos
La programación estructurada es el paradigma más utilizado por los principiantes porque es la forma más sencilla de construir un programa pequeño.
Implica ejecutar un programa Python de forma secuencial. Eso significa que le está dando a la computadora una lista de tareas y luego ejecutándolas de arriba a abajo.
small = 2
regular = 5
big = 6
user_budget = input('What is your budget? ')
try:
user_budget = int(user_budget)
except:
print('Please enter a number')
exit()
if user_budget > 0:
if user_budget >= big:
print('You can afford the big coffee')
if user_budget == big:
print('It's complete')
else:
print('Your change is', user_budget - big)
elif user_budget == regular:
print('You can afford the regular coffee')
print('It's complete')
elif user_budget >= small:
print('You can buy the small coffee')
if user_budget == small:
print('It's complete')
else:
print('Your change is', user_budget - small)
Veamos un ejemplo de programación estructurada con un programa de cafetería.
El código anterior actúa como un vendedor de cafetería. Le pedirá un presupuesto y luego le “venderá” el café más grande que pueda comprar.
Intenta ejecutarlo en la terminal. Se ejecutará paso a paso, dependiendo de su entrada.
- Este código funciona perfectamente, pero tenemos tres problemas:
- Tiene mucha lógica repetida. Utiliza muchos anidados si
- condicionales.
Será difícil de leer y modificar.
OOP se inventó como una solución a todos estos problemas.
class Coffee:
# Constructor
def __init__(self, name, price):
self.name = name
self.price = float(price)
def check_budget(self, budget):
# Check if the budget is valid
if not isinstance(budget, (int, float)):
print('Enter float or int')
exit()
if budget < 0:
print('Sorry you don't have money')
exit()
def get_change(self, budget):
return budget - self.price
def sell(self, budget):
self.check_budget(budget)
if budget >= self.price:
print(f'You can buy the {self.name} coffee')
if budget == self.price:
print('It's complete')
else:
print(f'Here is your change {self.get_change(budget)}$')
exit('Thanks for your transaction')
Veamos el programa anterior implementado con OOP. No se preocupe si aún no lo comprende. Es solo para comparar la programación estructurada y la programación orientada a objetos. Nota:
Todos los conceptos siguientes se explicarán con más profundidad a lo largo del artículo. El código anterior representa un clase
llamado «Café». Tiene dos atributos, «nombre» y «precio», y ambos se utilizan en los métodos. El método principal es «vender», que procesa toda la lógica necesaria para completar el proceso de venta.
Si intenta ejecutar esa clase, no obtendrá ningún resultado. Ocurre principalmente porque solo estamos declarando la «plantilla» para los cafés, no los cafés en sí.
small = Coffee('Small', 2)
regular = Coffee('Regular', 5)
big = Coffee('Big', 6)
try:
user_budget = float(input('What is your budget? '))
except ValueError:
exit('Please enter a number')
for coffee in [big, regular, small]:
coffee.sell(user_budget)
Implementemos esa clase con el siguiente código: Aquí estamos haciendo instancias,
u objetos de café, de la clase «Café», luego llamando al método «vender» de cada café hasta que el usuario pueda permitirse cualquier opción.
Obtendremos el mismo resultado con ambos enfoques, pero podemos extender la funcionalidad del programa mucho mejor con OOP.
| A continuación se muestra una tabla que compara la programación orientada a objetos y la programación estructurada: | OOP |
| Programación estructurada | Más fácil de mantener |
| Difícil de mantener
No te repitas Enfoque (SECO) |
Código repetido en muchos lugares |
| Pequeños fragmentos de código reutilizados en muchos lugares | Una gran cantidad de código en pocos lugares. |
| Enfoque de objeto | Enfoque de código de bloque |
| Más fácil de depurar | Más difícil de depurar |
| Gran curva de aprendizaje | Curva de aprendizaje más simple |
| Utilizado en grandes proyectos | Optimizado para programas simples |
Para concluir la comparación de paradigmas:
- Ninguno de los paradigmas es perfecto (la programación orientada a objetos puede ser abrumadora de usar en proyectos simples).
- Estas son solo dos formas de resolver un problema; hay otros por ahí.
- La programación orientada a objetos se utiliza en grandes bases de código, mientras que la programación estructurada es principalmente para proyectos simples.
Pasemos a los objetos integrados en Python.
Todo es un objeto en Python
Te contamos un secreto: has estado usando OOP todo el tiempo sin darte cuenta.
Incluso cuando usa otros paradigmas en Python, todavía usa objetos para hacer casi todo.
Eso es porque, en Python, todo es un objeto.
Recuerde la definición de objeto: un objeto en Python es una colección única de datos (atributos) y comportamiento (métodos).
Eso coincide con cualquier tipo de datos en Python.
Una cadena es una colección de datos (caracteres) y comportamientos (superior(), más bajo(), etc.). Lo mismo se aplica a enteros, flotadores, booleanos, liza, y diccionarios.
Antes de continuar, repasemos el significado de los atributos y métodos.
Atributos y métodos
Los atributos son internos variables dentro de objetos, mientras que los métodos son funciones que producen algún comportamiento.
Hagamos un ejercicio simple en el shell de Python. Puedes abrirlo escribiendo python o python3 en tu terminal.
Shell de Python
Ahora, trabajemos con el shell de Python para descubrir métodos y tipos.
>>> kinsta="Kinsta, Premium WordPress hosting"
>>> kinsta.upper()
'KINSTA, PREMIUM WORDPRESS HOSTING'
En la segunda línea, llamamos a un método de cadena, superior(). Devuelve el contenido de la cadena todo en mayúsculas. Sin embargo, no cambia la variable original.
>>> kinsta
'Kinsta, Premium WordPress hosting'
Profundicemos en funciones valiosas al trabajar con objetos.
los escribe() La función le permite obtener el tipo de un objeto. El «tipo» es la clase a la que pertenece el objeto.
>>> type(kinsta)
# class 'str'
los dir () La función devuelve todos los atributos y métodos de un objeto. Probémoslo con el kinsta variable.
>>> dir(kinsta)
['__add__', '__class__', ........... 'upper', 'zfill']
Ahora, intente imprimir algunos de los atributos ocultos de este objeto.
>>> kinsta.__class__ # class ‘str’ e>
Esto generará la clase del objeto kinsta pertenece a. Entonces podemos decir lo único que escribe devuelve la función es el __clase__ atributo de un objeto.
Puede experimentar con todos los tipos de datos, descubriendo todos sus atributos y métodos directamente en el terminal. Puede obtener más información sobre los tipos de datos integrados en la documentación oficial.
Tu primer objeto en Python
A clase es como una plantilla. Le permite crear objetos personalizados basados en los atributos y métodos que defina.
Puedes pensar en ello como un cortador de galletas que modifica para hornear las cookies perfectas (objetos, no cookies de seguimiento), con características definidas: forma, tamaño, etc.
Por otro lado, tenemos instancias. Una instancia es un objeto individual de una clase, que tiene una dirección de memoria única.
Instancias en Python
Ahora que sabe qué son las clases y las instancias, ¡definamos algunas!
Para definir una clase en Python, usa el clase palabra clave, seguida de su nombre. En este caso, creará una clase llamada Galleta.
Nota: En Python, usamos la convención de nombres de casos de camello para nombrar clases.
class Cookie:
pass
Abra su shell de Python y escriba el código de arriba. Para crear una instancia de una clase, simplemente escriba su nombre y paréntesis después de ella. Es el mismo proceso que invocar una función.
cookie1 = Cookie()
¡Felicitaciones, acaba de crear su primer objeto en Python! Puede verificar su identificación y tipo con el siguiente código:
id(cookie1)
140130610977040 # Unique identifier of the object
type(cookie1)
<class '__main__.Cookie'>
Como puede ver, esta cookie tiene un identificador único en la memoria y su tipo es Galleta.
También puede comprobar si un objeto es una instancia de una clase con la isinstance () función.
isinstance(cookie1, Cookie)
# True
isinstance(cookie1, int)
# False
isinstance('a string', Cookie)
# False
Método constructor
los __en eso__() El método también se denomina «constructor». Se llama Python cada vez que instanciamos un objeto.
El constructor crea el estado inicial del objeto con el conjunto mínimo de parámetros que necesita para existir. Modifiquemos el Galleta class, por lo que acepta parámetros en su constructor.
class Cookie:
# Constructor
def __init__(self, name, shape, chips="Chocolate"):
# Instance attributes
self.name = name
self.shape = shape
self.chips = chips
En el Galleta clase, cada galleta debe tener un nombre, forma y chips. Hemos definido el último como «Chocolate».
Por otra parte, uno mismo se refiere a la instancia de la clase (el objeto en sí).
Intente pegar la clase en el shell y cree una instancia de la cookie como de costumbre.
cookie2 = Cookie()
# TypeError
Obtendrá un error. Esto se debe a que debe proporcionar el conjunto mínimo de datos que el objeto necesita para vivir; en este caso, nombre y forma ya que ya hemos establecido papas fritas a «Chocolate».
cookie2 = Cookie('Awesome cookie', 'Star')
Para acceder a los atributos de una instancia, debe utilizar la notación de puntos.
cookie2.name
# 'Awesome cookie'
cookie2.shape
# 'Star'
cookie2.chips
# 'Chocolate'
Por ahora, el Galleta la clase no tiene nada demasiado jugoso. Agreguemos un método de muestra hornear() para hacer las cosas más interesantes.
class Cookie:
# Constructor
def __init__(self, name, shape, chips="Chocolate"):
# Instance attributes
self.name = name
self.shape = shape
self.chips = chips
# The object is passing itself as a parameter
def bake(self):
print(f'This {self.name}, is being baked with the shape {self.shape} and chips of {self.chips}')
print('Enjoy your cookie!')
Para llamar a un método, use la notación de puntos e invocalo como una función.
cookie3 = Cookie('Baked cookie', 'Tree')
cookie3.bake()
# This Baked cookie, is being baked with the shape Tree and chips of Chocolate
Enjoy your cookie!
Los 4 pilares de la programación orientada a objetos en Python
La programación orientada a objetos incluye cuatro pilares principales:
1. Abstracción
La abstracción oculta al usuario la funcionalidad interna de una aplicación. El usuario puede ser el cliente final u otros desarrolladores.
Podemos encontrar abstracción en nuestra vida diaria. Por ejemplo, sabe cómo usar su teléfono, pero probablemente no sepa exactamente lo que sucede dentro de él cada vez que abre una aplicación.
Otro ejemplo es el propio Python. Sabe cómo usarlo para crear software funcional y puede hacerlo incluso si no comprende el funcionamiento interno de Python.
Aplicar lo mismo al código le permite recopilar todos los objetos en un problema y abstracto funcionalidad estándar en clases.
2. Herencia
La herencia nos permite definir múltiples subclases de una clase ya definida.
El propósito principal de la misma es seguir el principio DRY. Podrá reutilizar una gran cantidad de código implementando todos los componentes para compartir en superclases.
Puede pensar en ello como el concepto de la vida real de herencia genética. Los hijos (subclase) son el resultado de la herencia entre dos padres (superclases). Heredan todas las características físicas (atributos) y algunos comportamientos comunes (métodos).
3. Polimorfismo
El polimorfismo nos permite modificar ligeramente los métodos y atributos del subclases previamente definido en el superclase.
El significado literal es «muchas formas. » Eso es porque creamos métodos con el mismo nombre pero con diferentes funcionalidades.
Volviendo a la idea anterior, los niños también son un ejemplo perfecto de polimorfismo. Pueden heredar un comportamiento definido tener hambre() pero de una manera ligeramente diferente, por ejemplo, tener hambre cada 4 horas en lugar de cada 6.
4. Encapsulación
La encapsulación es el proceso en el que protegemos la integridad interna de los datos en una clase.
Aunque no hay un privado en Python, puede aplicar la encapsulación utilizando manipular en Python. Hay métodos especiales llamados captadores y setters que nos permiten acceder a atributos y métodos únicos.
Imaginemos un Humano clase que tiene un atributo único llamado _altura. Puede modificar este atributo solo dentro de ciertas restricciones (es casi imposible estar a más de 3 metros).
Construya una calculadora de resolución de forma de área
Una de las mejores cosas de Python es que nos permite crear una amplia variedad de software, desde un programa CLI (interfaz de línea de comandos) hasta una aplicación web compleja.
Ahora que ha aprendido los conceptos básicos de la programación orientada a objetos, es hora de aplicarlos a un proyecto real.
Nota: Todo el siguiente código estará disponible dentro de este repositorio de GitHub. Una herramienta de revisión de código que nos ayuda a administrar versiones de código con Git.
Su tarea es crear una calculadora de área de las siguientes formas:
- Cuadrado
- Rectángulo
- Triángulo
- Circulo
- Hexágono
Forma Clase base
Primero, crea un archivo calculadora.py y ábrelo. Como ya tenemos los objetos con los que trabajar, será fácil abstracto ellos en una clase.
Puede analizar las características comunes y descubrir que todas ellas son Formas 2D. Por tanto, la mejor opción es crear una clase Forma con un método get_area () del cual heredará cada forma.
Nota: Todos los métodos deben ser verbos. Eso es porque este método se llama get_area () y no zona().
class Shape:
def __init__(self):
pass
def get_area(self):
pass
El código anterior define la clase; sin embargo, todavía no hay nada interesante.
Implementemos la funcionalidad estándar de la mayoría de estas formas.
class Shape:
def __init__(self, side1, side2):
self.side1 = side1
self.side2 = side2
def get_area(self):
return self.side1 * self.side2
def __str__(self):
return f'The area of this {self.__class__.__name__} is: {self.get_area()}'
Analicemos lo que estamos haciendo con este código:
- En el __en eso__ método, estamos solicitando dos parámetros, lado1 y lado2. Estos permanecerán como atributos de instancia.
- los get_area () La función devuelve el área de la forma. En este caso, se usa la fórmula del área de un rectángulo, ya que será más fácil de implementar con otras formas.
- los __str __ () método es un «método mágico» al igual que __en eso__(). Le permite modificar la forma en que se imprimirá una instancia.
- los self .__ class __.__ name__ El atributo oculto se refiere al nombre de la clase. Si estuvieras trabajando con un Triángulo clase, ese atributo sería «Triángulo».
Clase de rectángulo
Dado que implementamos la fórmula del área del rectángulo, pudimos crear un simple Rectángulo clase que no hace nada más que heredar de la Forma clase.
Aplicar herencia en Python, creará una clase como de costumbre y rodeará el superclase desea heredar entre paréntesis.
# Folded base class
class Shape: ...
class Rectangle(Shape): # Superclass in Parenthesis
pass
Clase cuadrada
Podemos adoptar un enfoque excelente para polimorfismo con el Cuadrado clase.
Recuerda que un cuadrado es solo un rectángulo cuyos cuatro lados son todos iguales. Eso significa que podemos usar la misma fórmula para obtener el área.
Podemos hacer esto modificando el en eso método, aceptando solo un lado como parámetro, y pasar ese valor lateral al constructor del Rectángulo clase.
# Folded classes
class Shape: ...
class Rectangle(Shape): ...
class Square(Rectangle):
def __init__(self, side):
super().__init__(side, side)
Como puede ver, la superfunción pasa el lado parámetro dos veces al superclase. En otras palabras, esta pasando lado ambos como lado1 y lado2 al constructor previamente definido.
Clase de triángulo
Un triángulo mide la mitad del tamaño del rectángulo que lo rodea.
Relación entre triángulos y rectángulos (Fuente de la imagen: tutores universitarios).
Por tanto, podemos heredar de la Rectángulo clase y modificar el get_area método para hacer coincidir la fórmula del área del triángulo, que es la mitad de la base multiplicada por la altura.
# Folded classes
class Shape: ...
class Rectangle(Shape): ...
class Square(Rectangle): ...
class Triangle(Rectangle):
def __init__(self, base, height):
super().__init__(base, height)
def get_area(self):
area = super().get_area()
return area / 2
Otro caso de uso del súper() función es llamar a un método definido en el superclase y almacenar el resultado como una variable. Eso es lo que está pasando dentro del get_area () método.
Clase circular
Puedes encontrar el área del círculo con la fórmula πr², dónde r es el radio del círculo. Eso significa que tenemos que modificar el get_area () método para implementar esa fórmula.
Nota: Podemos importar el valor aproximado de π del módulo de matemáticas
# Folded classes
class Shape: ...
class Rectangle(Shape): ...
class Square(Rectangle): ...
class Triangle(Rectangle): …
# At the start of the file
from math import pi
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def get_area(self):
return pi * (self.radius ** 2)
El código anterior define el Circulo clase, que usa un constructor diferente y get_area () métodos.
A pesar de que Circulo hereda de la Forma class, puede redefinir cada método y atribuirlo a su gusto.
Clase de hexágono regular
Solo necesitamos la longitud de un lado de un hexágono regular para calcular su área. Es similar al Cuadrado class, donde solo pasamos un argumento al constructor.
Fórmula del área hexagonal (Fuente de la imagen: BYJU’S)
Sin embargo, la fórmula es bastante diferente e implica el uso de una raíz cuadrada. Por eso usarás el sqrt () función del módulo de matemáticas.
# Folded classes
class Shape: ...
class Rectangle(Shape): ...
class Square(Rectangle): ...
class Triangle(Rectangle): …
class Circle(Shape): …
# Import square root
from math import sqrt
class Hexagon(Rectangle):
def get_area(self):
return (3 * sqrt(3) * self.side1 ** 2) / 2
Probar nuestras clases
Puede ingresar a un modo interactivo cuando ejecuta un archivo Python usando un depurador. La forma más sencilla de hacer esto es utilizando la función de punto de interrupción incorporada.
Nota: Esta función solo está disponible en Python 3.7 o posterior.
from math import pi, sqrt
# Folded classes
class Shape: ...
class Rectangle(Shape): ...
class Square(Rectangle): ...
class Triangle(Rectangle): …
class Circle(Shape): …
class Hexagon(Rectangle): …
breakpoint()
Ahora, ejecute el archivo Python y juegue con las clases que creó.
$ python calculator.py
(Pdb) rec = Rectangle(1, 2)(Pdb) print(rec)
The area of this Rectangle is: 2
(Pdb) sqr = Square(4)
(Pdb) print(sqr)
The area of this Square is: 16
(Pdb) tri = Triangle(2, 3)
(Pdb) print(tri)
The area of this Triangle is: 3.0
(Pdb) cir = Circle(4)
(Pdb) print(cir)
The area of this Circle is: 50.26548245743669
(Pdb) hex = Hexagon(3)
(Pdb) print(hex)
The area of this Hexagon is: 23.382685902179844
Desafío
Crea una clase con un método correr donde el usuario puede elegir una forma y calcular su área.
Cuando haya completado el desafío, puede enviar una solicitud de extracción al repositorio de GitHub o publicar su solución en la sección de comentarios.
Resumen
La programación orientada a objetos es un paradigma en el que resolvemos problemas pensando en ellos como objetos. Si comprende Python OOP, también puede aplicarlo fácilmente en lenguajes como Java, PHP, Javascript y C #.
En este artículo, ha aprendido sobre:
- El concepto de orientación a objetos en Python
- Ventajas de la programación orientada a objetos sobre la estructurada
- Conceptos básicos de la programación orientada a objetos en Python
- Concepto de clases y cómo usarlos en Python
- los constructor de una clase en Python
- Métodos y atributos en Python
- Los cuatro pilares de la programación orientada a objetos
- Implementar abstracción, herencia, y polimorfismo en un proyecto
¡Ahora te toca a ti!
¡Háganos saber su solución al desafío a continuación en los comentarios! Y no olvide consultar nuestra guía de comparación entre Python y PHP.
Ahorre tiempo, costos y maximice el rendimiento del sitio con:
- Ayuda instantánea de expertos en alojamiento de WordPress, 24 horas al día, 7 días a la semana.
- Integración de Cloudflare Enterprise.
- Alcance de audiencia global con 28 centros de datos en todo el mundo.
- Optimización con nuestro monitoreo de rendimiento de aplicaciones integrado.
Todo eso y mucho más, en un plan sin contratos a largo plazo, migraciones asistidas y una garantía de devolución de dinero de 30 días. Consulte nuestros planes o hable con ventas para encontrar el plan adecuado para usted.
