Programación orientada a objetos con Python

En Python todo es un objeto. Un objeto tiene cero o más métodos.
Hasta ahora ya has trabajado con objetos. Tomemos un ejemplo:

s = [1,2,3,4]
s.reverse()
s.append(2)
s.remove(1)

En el ejemplo anterior, tenemos un objeto llamado s (una lista). Este objeto tiene los métodos reverse(), append() y remove().

¿Qué son las clases y los objetos en Python?

Python es un lenguaje orientado a objetos, los objetos son esenciales para él. Entonces, ¿qué es un objeto?

Un objeto es una colección de variables y métodos (los métodos de los objetos interactúan con los datos de los objetos).

Todo en Python es un objeto.

Si tiene un objeto de cadena, puede contener una variable (el valor de la cadena).

Luego puede usar métodos para interactuar con la variable de objetos:

>>> s.
s.capitalize()   s.encode()       s.format()       s.isalpha()      s.isidentifier() s.isspace()      s.ljust()        s.partition()    s.rjust()        s.split()        s.swapcase()     s.zfill()
.casefold()      s.endswith()     s.format_map()   s.isascii()      s.islower()      s.istitle()      s.lower()        s.replace()      s.rpartition()   s.splitlines()   s.title()        
s.center()       s.expandtabs()   s.index()        s.isdecimal()    s.isnumeric()    s.isupper()      s.lstrip()       s.rfind()        s.rsplit()       s.startswith()   s.translate()    
s.count()        s.find()         s.isalnum()      s.isdigit()      s.isprintable()  s.join()         s.maketrans()    s.rindex()       s.rstrip()       s.strip()        s.upper()

Cada objeto se crea a partir de una clase. Una clase es como un proyecto original para un objeto.

Para ver de qué clase se crea un objeto, puede llamar al type() método.

Un programa orientado a objetos a menudo tiene muchas clases y objetos diferentes.

Clase de python

Una clase se define con la palabra clave clase.

Las clases pueden tener métodos, que comienzan con la palabra clave definitivamente.

La clase más simple que puede crear es una clase vacía:

La clase se puede usar para crear uno o más objetos.
Los objetos se crean así:

tea = Drink()
juice = Drink()
coffee = Drink()

La clase puede tener una o más variables:

Los objetos pueden establecer la variable (después de la creación)

tea = Drink()
juice = Drink()
coffee = Drink()

tea.price = 1
juice.price 1.25
coffee.price = 1.50

Los valores son únicos para cada objeto.

Pero la clase define qué variables existen para los objetos.

Si no define la variable en la clase, arroja un error:

>>> class Drink:
...     price = 0
... 
>>> tea = Drink()
>>> tea.color = green
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'green' is not defined
>>>

Para resolver eso, agregue las variables que desee a la clase.

>>> class Drink:
...     price = 0
...     color = ''

Puede tener más de una clase en su programa.

Los objetos deben crearse a partir de una clase que sea una abstracción de objetos.
Entonces, si quiere un objeto ‘coche’, no quiere crearlo a partir de una clase llamada ‘Bebida’ porque las variables y los métodos no tendrían sentido.

Constructores en Python

La clase anterior tenía solo dos variables, pero una clase puede tener muchas variables.

Digamos que una clase tiene diez variables, entonces tendría que establecer variables de objetos como esta:

obj1.var1 = ...
obj1.var2 = ...
obj1.var3 = ...
obj1.var4 = ...
...
obj1.var10 = ...

Esto se convierte rápidamente en mucho trabajo de mecanografía.

Tenga en cuenta que luego necesita hacer eso para cada objeto.

Para simplificar la vida, puede utilizar un constructor.

Un constructor es un método que establece las variables de los objetos.

De forma predeterminada, se llama a un constructor durante la creación del objeto.

obj1 = MyClass(var1,var2,var3,var4...)

Para hacer esto, necesita modificar la clase.

agregas el constructor Cuál es el __init__ método.

>>> class Drink():
...     def __init__(self, price, color):
...         self.price = price
...         self.color = color
...

En este método configuras las variables de los objetos. La palabra uno mismo se refiere al objeto creado.

Entonces puedes crear objetos como este:

>>> soda = Drink(2,'blue')
>>> milkshake = Drink(3,'white')

Cada objeto tiene las variables establecidas en el momento de la creación utilizando el constructor.

Cada clase puede tener exactamente un constructor, como en la imagen a continuación, donde se resaltan los constructores.

Métodos de objeto

Los objetos pueden contener métodos, estos métodos interactúan con los datos de los objetos.

La clase a continuación tiene un método, que genera el valor de la variable de objetos.

La palabra uno mismo significa el objeto, similar a cómo usamos my en inglés.

Entonces my.name es único para cada persona. De la misma manera self.name es único para cada objeto.

>>> class Person:
...     name = ''
...     def who(self):
...         print("I am " + self.name)
...

Después de la definición de la clase, puede crear uno o más objetos.

Cada objeto puede interactuar con los métodos de clase asociados.

>>> u123 = Person()
>>> u123.name = "Alice"
>>> 
>>> u123.who()
I am Alice
>>>

Una clase puede tener más de un método.

Puede ver qué métodos y variables están disponibles escribiendo el nombre del objeto, un punto y luego la tecla de tabulación.

>>> u123.
u123.name  u123.who(

Puede extender la clase con un constructor (como se describe arriba) y varios otros métodos:

>>> class Person:
...     
...     def __init__(self, name, job):
...         self.name = name
...         self.job = job
...     def setName(self, name):
...         self.name = name
...     def setJob(self, job):
...         self.job = job
...     def who(self):
...         print("I am " + self.name + " and I am a " + self.job)
...

Luego crea algunos objetos:

>>> user1 = Person("Alice","Hairdresser")
>>> user2 = Person("Cassy", "Carpenter")

Y cada método puede interactuar con las variables de los objetos:

>>> user1.who()
I am Alice and I am a Hairdresser
>>> 
>>> user2.who()
I am Cassy and I am a Carpenter
>>>

Ejemplo de clase

Ejemplo 1
Para crear nuevos tipos de objetos, debemos definir una clase.

class ShoppingList:
    products = []

    def __init__(self):
        print('Shopping list created')

    def add(self, name):
        self.products.append(name)

    def show(self):
        print(self.products)

groceries = ShoppingList()
groceries.add('Peanutbutter')
groceries.add('Milk')
groceries.show()

Creamos un objeto llamado comestibles, del tipo ShoppingList

Luego usamos los métodos add() y show().
También definimos una clase llamada ShoppingList que tiene estos métodos definidos.

Nota: hay un método llamado en eso(), que siempre se invoca en la creación de un objeto. Esto se llama el constructor.

Ejemplo 2
Creamos un objeto del tipo coche, llamado superCar. El objeto superCar tiene un método drive().

Además de la en eso método (también llamado constructor) que se llama cuando crea nuevos objetos.

class Car:
    def __init__(self):
        print('Car created')

    def drive(self):
        print('Engine started')

superCar = Car()
superCar.drive()

Eliminación de objetos

Si desea eliminar el objeto después de la creación, eso es posible.

Un objeto se puede eliminar con el del declaración.

Así que primero crea algunos objetos.

>>> alice = User()
>>> bob = User()
>>> cassy = User()

A continuación, elimine uno o más:

Si intenta acceder a un objeto eliminado, verá este error:

>>> bob
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'bob' is not defined
>>>

Un objeto existente mostrará algo como esto:

>>> alice
<__main__.User object at 0x7f6119c0bc90>

Es posible eliminar un objeto, pero en la mayoría de los casos no es necesario.

También puede eliminar atributos de clase en tiempo de ejecución, pero esto no se recomienda.

>>> class Drink:
...     price = 0
...     color = ''
...

Para eliminar un atributo use del otra vez.

>>> 
>>> del Drink.color
>>> Drink.color
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'Drink' has no attribute 'color'
>>>

También te puede interesar estos artículos sobre que es la programacion orientada a objetos en python:

Los objetos pueden llamar a métodos en python, que son métodos definidos en clases. Los métodos pueden modificar todas las ...
Los métodos estáticos en python no requieren la creación de objetos de una clase para ser llamados, se pueden llamar ...
Clases abstractas en python: Obligar a una clase a implementar métodos. Las clases abstractas pueden contener métodos abstractos: métodos sin ...
La herencia es uno de los conceptos clave de la programación orientada a objetos (POO). Los objetos se crean usando ...
Un constructor en python es el primer método que se llama en la creación de objetos (un concepto de Programación ...
Los destructores se llaman cuando un objeto se destruye. Es el polo opuesto del constructor, que se invoca en la ...

¿ Te pareció de utilidad este articulo Clases y objetos de Python, programación orientada a objetos con Python?
⬇️ Si compartes esta entrada otras personas podrán aprender.⬇️