La programación orientada a objetos es un concepto fundamental en Python, que permite a los desarrolladores crear aplicaciones modulares, mantenibles y escalables. Al comprender los principios básicos de la programación orientada a objetos (clases, objetos, herencia, encapsulación, polimorfismo y abstracción), los programadores pueden aprovechar todo el potencial de las capacidades de programación orientada a objetos de Python para diseñar soluciones elegantes y eficientes a problemas complejos.
¿Qué es la programación orientada a objetos en Python?
En Python, la programación orientada a objetos (POO) es un paradigma de programación que utiliza objetos y clases en la programación. Su objetivo es implementar entidades del mundo real como herencia, polimorfismos, encapsulación, etc. en la programación. El concepto principal de la programación orientada a objetos (OOP) o conceptos de oops en Python es vincular los datos y las funciones que funcionan juntos como una sola unidad para que ninguna otra parte del código pueda acceder a estos datos.
lógica de transferencia de registros
Conceptos de POO en Python
- Clase en Python
- Objetos en Python
- Polimorfismo en Python
- Encapsulación en Python
- Herencia en Python
- Abstracción de datos en Python

Conceptos de programación orientada a objetos de Python
Clase de Python
Una clase es una colección de objetos. Una clase contiene los planos o el prototipo a partir del cual se crean los objetos. Es una entidad lógica que contiene algunos atributos y métodos.
Para comprender la necesidad de crear una clase, consideremos un ejemplo: digamos que desea realizar un seguimiento de la cantidad de perros que pueden tener diferentes atributos como raza y edad. Si se utiliza una lista, el primer elemento podría ser la raza del perro, mientras que el segundo elemento podría representar su edad. Supongamos que hay 100 perros diferentes, entonces ¿cómo sabrías qué elemento se supone que es cuál? ¿Y si quisieras añadir otras propiedades a estos perros? A esto le falta organización y es la necesidad exacta de las clases.
Algunos puntos sobre la clase Python:
- Las clases se crean mediante clase de palabra clave.
- Los atributos son las variables que pertenecen a una clase.
- Los atributos siempre son públicos y se puede acceder a ellos mediante el operador punto (.). Ej.: Miclase.Miatributo
Sintaxis de definición de clase:
class ClassName: # Statement-1 . . . # Statement-N>
Creando una clase vacía en Python
En el ejemplo anterior, hemos creado una clase llamada Perro usando la palabra clave class.
Pitón
# Python3 program to # demonstrate defining # a class class Dog: pass>
Objetos de Python
En la programación orientada a objetos de Python, el objeto es una entidad que tiene un estado y un comportamiento asociados. Puede ser cualquier objeto del mundo real, como un mouse, un teclado, una silla, una mesa, un bolígrafo, etc. Los números enteros, las cadenas, los números de punto flotante e incluso las matrices y los diccionarios son todos objetos. Más específicamente, cualquier número entero o cualquier cadena es un objeto. El número 12 es un objeto, la cadena Hola mundo es un objeto, una lista es un objeto que puede contener otros objetos, etc. Has estado usando objetos todo el tiempo y es posible que ni siquiera te des cuenta.
Un objeto consta de:
- Estado: Está representado por los atributos de un objeto. También refleja las propiedades de un objeto.
- Comportamiento: Está representado por los métodos de un objeto. También refleja la respuesta de un objeto a otros objetos.
- Identidad: Le da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.
Para comprender el estado, el comportamiento y la identidad, tomemos el ejemplo del perro de clase (explicado anteriormente).
- La identidad puede considerarse como el nombre del perro.
- El estado o los atributos pueden considerarse como la raza, la edad o el color del perro.
- El comportamiento se puede considerar en función de si el perro está comiendo o durmiendo.
Creando un objeto
Esto creará un objeto llamado obj de la clase Perro definida anteriormente. Antes de profundizar en los objetos y las clases, comprendamos algunas palabras clave básicas que se utilizarán al trabajar con objetos y clases.
Python3 obj = Dog()>
El yo de Python
- Los métodos de clase deben tener un primer parámetro adicional en la definición del método. No damos un valor para este parámetro cuando llamamos al método, Python lo proporciona
- Si tenemos un método que no acepta argumentos, aún así tendremos que tener un argumento.
- Esto es similar a este puntero en C++ y esta referencia en Java.
Cuando llamamos a un método de este objeto como myobject.method(arg1, arg2), Python lo convierte automáticamente en MyClass.method(myobject, arg1, arg2); de esto se trata el self especial.
Nota: Para obtener más información, consulte yo en la clase de Python
El método __init__ de Python
El método __init__ Es similar a los constructores en C++ y Java. Se ejecuta tan pronto como se crea una instancia de un objeto de una clase. El método es útil para realizar cualquier inicialización que desee realizar con su objeto. Ahora definamos una clase y creemos algunos objetos usando el método self y __init__.
Crear una clase y un objeto con atributos de clase e instancia
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))> Producción
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Creando clases y objetos con métodos.
Aquí, la clase The Dog se define con dos atributos:
- atributo1 es un atributo de clase establecido en el valor mamífero . Los atributos de clase son compartidos por todas las instancias de la clase.
- __init__ es un método especial (constructor) que inicializa una instancia de la clase Dog. Se necesitan dos parámetros: self (que se refiere a la instancia que se está creando) y nombre (que representa el nombre del perro). El parámetro de nombre se utiliza para asignar un atributo de nombre a cada instancia de Perro.
El método hablar se define dentro de la clase Perro. Este método imprime una cadena que incluye el nombre de la instancia del perro.
El código del controlador comienza creando dos instancias de la clase Perro: Rodger y Tommy. Se llama al método __init__ para que cada instancia inicialice sus atributos de nombre con los nombres proporcionados. El método hablar se llama en ambos casos (Rodger.speak() y Tommy.speak()), lo que hace que cada perro imprima una declaración con su nombre.
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()> Producción
My name is Rodger My name is Tommy>
Nota: Para obtener más información, consulte Clases y objetos de Python
recorrido en orden
Herencia de Python
En la programación orientada a objetos de Python, la herencia es la capacidad de una clase de derivar o heredar las propiedades de otra clase. La clase que deriva las propiedades se denomina clase derivada o clase secundaria y la clase de la que se derivan las propiedades se denomina clase base o clase principal. Los beneficios de la herencia son:
- Representa bien las relaciones del mundo real.
- Proporciona la reutilización de un código. No tenemos que escribir el mismo código una y otra vez. Además, nos permite agregar más funciones a una clase sin modificarla.
- Es de naturaleza transitiva, lo que significa que si la clase B hereda de otra clase A, entonces todas las subclases de B heredarían automáticamente de la clase A.
Tipos de herencia
- Herencia única : La herencia de un solo nivel permite que una clase derivada herede características de una clase monoparental.
- Herencia multinivel: La herencia multinivel permite que una clase derivada herede propiedades de una clase principal inmediata que a su vez hereda propiedades de su clase principal.
- Herencia jerárquica: La herencia de nivel jerárquico permite que más de una clase derivada herede propiedades de una clase principal.
- Herencia múltiple: La herencia de múltiples niveles permite que una clase derivada herede propiedades de más de una clase base.
Herencia en Python
En el artículo anterior, hemos creado dos clases, es decir, Persona (clase principal) y Empleado (clase secundaria). La clase Empleado hereda de la clase Persona. Podemos usar los métodos de la clase persona a través de la clase empleado como se ve en la función de visualización en el código anterior. Una clase secundaria también puede modificar el comportamiento de la clase principal como se ve a través del método detalles().
Python3 # Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()> Producción
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Nota: Para obtener más información, consulte nuestra Herencia en Python tutorial.
Polimorfismo de Python
En la programación Python orientada a objetos, el polimorfismo simplemente significa tener muchas formas. Por ejemplo, necesitamos determinar si una determinada especie de pájaro vuela o no, usando polimorfismo podemos hacerlo usando una sola función.
Polimorfismo en Python
Este código demuestra el concepto de herencia de Python oops y anulación de métodos en las clases de Python. Muestra cómo las subclases pueden anular los métodos definidos en su clase principal para proporcionar un comportamiento específico y al mismo tiempo heredar otros métodos de la clase principal.
Python3 class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()> Producción
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>
Nota: Para obtener más información, consulte nuestra Polimorfismo en Python Tutorial.
Encapsulación de Python
En la programación orientada a objetos de Python, la encapsulación es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Describe la idea de empaquetar datos y los métodos que funcionan con datos dentro de una unidad. Esto impone restricciones al acceso directo a variables y métodos y puede evitar la modificación accidental de datos. Para evitar cambios accidentales, la variable de un objeto solo se puede cambiar mediante el método de un objeto. Ese tipo de variables se conocen como variables privadas.
Una clase es un ejemplo de encapsulación, ya que encapsula todos los datos que son funciones miembro, variables, etc.

Encapsulación en Python
En el ejemplo anterior, hemos creado la variable c como atributo privado. Ni siquiera podemos acceder a este atributo directamente y ni siquiera podemos cambiar su valor.
Python3 # Python program to # demonstrate private members # '__' double underscore represents private attribute. # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class> Producción
techcodeview.com>
Nota: para obtener más información, consulte nuestro Encapsulación en Python Tutorial.
Abstracción de datos
Oculta detalles de código innecesarios al usuario. Además, cuando no queremos revelar partes sensibles de la implementación de nuestro código y aquí es donde surgió la abstracción de datos.
La abstracción de datos en Python se puede lograr mediante la creación de clases abstractas.
Programación orientada a objetos en Python | Conjunto 2 (ocultación de datos e impresión de objetos)