English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Python

Control de flujo de Python

Funciones en Python

Tipos de datos en Python

Operaciones de archivos de Python

Objetos y clases de Python

Fecha y hora de Python

Conocimientos avanzados de Python

Manual de referencia de Python

Programación orientada a objetos en Python

En este artículo, aprenderá a través de ejemplos la programación orientada a objetos (OOP) en Python y sus conceptos básicos.

Introducción a Python OOP

Python es un lenguaje de programación multiparadigma. Esto significa que admite diferentes métodos de programación.

Una方法是创建对象来解决编程问题。 Esto se conoce como programación orientada a objetos (OOP).

Un objeto tiene dos características:

  • Atributo

  • Comportamiento

Vamos a dar un ejemplo:

El pavo real es un objeto,

  • Nombre, edad, color son atributos

  • Cantar, bailar son comportamientos

El concepto de OOP en Python se centra en la creación de código reutilizable. Este concepto también se conoce como DRY (Don't Repeat Yourself) No repita usted mismo.

En Python, el concepto de OOP sigue algunos principios básicos:

HerenciaEl proceso de usar detalles de una nueva clase sin modificar la clase existente.
Encapsulación

Ocultar detalles privados de la clase a otros objetos.

Polimorfismo

El concepto de usar operaciones genéricas de manera diferente para diferentes datos de entrada.

Clase (class)

La clase es el plano del objeto.

Podemos ver a la clase como un bosquejo de un pavo real con etiqueta. Contiene todos los detalles sobre el nombre, el color, el tamaño, etc. Basándonos en estas descripciones, podemos estudiar al pavo real. Aquí, el pavo real es un objeto.

Un ejemplo de clase de pavo real puede ser:

class Parrot:
    pass

Aquí, usamos la palabra clave class para definir una clase vacía Parrot. Construimos ejemplos desde la clase. Un ejemplo es un objeto específico creado por una clase específica.

Objeto (Object)

Un objeto (ejemplo) es una instancia de una clase. Al definir una clase, solo se define la descripción del objeto. Por lo tanto, no se asigna memoria ni almacenamiento.

Un ejemplo de objeto de clase de pavo real puede ser:

obj = Parrot()

Aquí, obj es un objeto de la clase Parrot.

Supongamos que tenemos detalles de un pavo real. A continuación, mostraremos cómo construir la clase y el objeto de un pavo real.

Example1:En Python, crear clases y objetos

class Parrot:
    # Atributos de clase
    species = "pájaro"
    # Atributos de ejemplo
    def __init__(self, name, age):
        self.name = name
        self.age = age
# Ejemplificación de la clase Parrot
blu = Parrot("Gorrión", 10)
woo = Parrot("Pavo real", 15)
# Acceso a propiedades de clase
print("El gorrión es {}".format(blu.__class__.species))
print("El pavo real es {}".format(woo.__class__.species))
# Acceso a propiedades de ejemplo
print("{} tiene {} años".format(blu.name, blu.age))
print("{} tiene {} años".format(woo.name, woo.age))

Cuando ejecutamos el programa, la salida será:

El gorrión es
El pavo real es
El gorrión tiene 10 años
El pavo real tiene 15 años

En el programa anterior, creamos un objeto llamadoParrotla clase. Luego, definimos propiedades. Las propiedades son las características del objeto.

Luego, creamosParrotEjemplos de clase. Aquí,bluandwooes la referencia (valor) de nuestro nuevo objeto.

Luego, usamos class .species para acceder a las propiedades de clase. Las propiedades de clase de todos los ejemplos de la clase son las mismas. Del mismo modo, usamos blu.name y blu.age para acceder a las propiedades de ejemplo. Sin embargo, para cada ejemplo de la clase, las propiedades de ejemplo son diferentes.

Para obtener más información sobre clases y objetos, visiteClases y objetos de Python.

Métodos

Los métodos son funciones definidas dentro del cuerpo de la clase. Se utilizan para definir el comportamiento de los objetos.

Example2:En Python, crear métodos

class Parrot:
    
    # Atributos de ejemplo
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # Métodos de ejemplo
    def sing(self, song):
        return "{} canta {}".format(self.name, song)
    def dance(self):
        return "{} está ahora bailando".format(self.name)
# Ejemplificación del objeto
blu = Parrot("Blu", 10)
# Llamada a nuestros métodos de ejemplo
print(blu.sing("'Happy'"))
print(blu.dance())

Cuando ejecutamos el programa, la salida será:

Blu canta 'Happy'
Blu está bailando

En el programa anterior, definimos dos métodos, a saber, sing() y dance(). Se llaman métodos de ejemplo porque se invocan en el objeto de ejemplo (es decir, blu).

继承性

继承是一种创建新类的方法,用于在不修改现有类的细节的情况下使用它。新形成的类是一个派生类(或子类)。类似地,现有类是基类(或父类)。

Example3:在Python中使用继承

# 基类
class Bird:
    
    def __init__(self):
        print("El pájaro está listo")
    def whoisThis(self):
        print("pájaro")
    def swim(self):
        print("nadar más rápido")
# 子类
class Penguin(Bird):
    def __init__(self):
        # call super() function
        super().__init__()
        print("El pingüino está listo")
    def whoisThis(self):
        print("pingüino")
    def run(self):
        print("correr más rápido")
peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

Cuando ejecutamos el programa, la salida será:

El pájaro está listo
El pingüino está listo
pingüino
nadar más rápido
correr más rápido

En el programa anterior, creamos dos clases, es decirBird(父类)和Penguin(子类)。子类继承父类的功能。我们可以从swim()方法中看到这一点。子类再次修改了父类的行为。我们可以从whoisThis()方法中看到这一点。此外,我们通过创建新run()方法来扩展父类的功能。

Además, usamos la función super() antes del método init(). Esto se debe a que queremos traer el contenido del método init() desde la clase padre a la clase hija.

可封装性

En Python, al usar la POO, podemos limitar el acceso a métodos y variables. Esto evita la modificación directa de los datos (conocido como encapsulación). En Python, usamos el subrayado como prefijo para representar propiedades privadas, es decir, un solo "_" o dos "__".

Example4:Python中的数据封装

class Computer:
    def __init__(self):
        self.__maxprice = 900
    def sell(self):
        print("Precio: {}".format(self.__maxprice))
    def setMaxPrice(self, price):
        self.__maxprice = price
c = Computer()
c.sell()
# 改变价格
c.__maxprice = 1000
c.sell()
# 使用setter函数
c.setMaxPrice(1000)
c.sell()

Cuando ejecutamos el programa, la salida será:

Selling price: 900
Selling price: 900
Selling price: 1000

In the above program, we definedComputerClass. We use the __init__() method to store the highest selling price of the computer. We try to change the price. But we can't change it because Python will__maxpriceConsidered as private attributes. To change the value, we use the setter function, that is, setMaxPrice(), which takes price as a parameter.

Polymorphism

Polymorphism is a feature (in OOP) that can use a common interface for multiple forms (data types).

Suppose we need to color a shape, and there are multiple shape options (rectangle, square, circle). However, we can use the same method to color any shape. This concept is called polymorphism.

Example5:Using polymorphism in Python

class Parrot:
    def fly(self):
        print("Parrots can fly")
    
    def swim(self):
        print("Parrots cannot swim")
class Penguin:
    def fly(self):
        print("Penguins cannot fly")
    
    def swim(self):
        print("Penguins can swim")
# General interface
def flying_test(bird):
    bird.fly()
# Example object
blu = Parrot()
peggy = Penguin()
# Pass the object
flying_test(blu)
flying_test(peggy)

When we run the above program, the output will be:

Parrots can fly
Penguins cannot fly

In the above program, we defined two classesParrotandPenguin. Each has a generic fly() method. However, they have different functions. To allow polymorphism, we created a generic interface, that is, the flying_test() function can accept any object. Then, we passedbluandpeggyObject, it runs effectively.

Key points of object-oriented programming:

  • Make programming simple and effective.

  • Classes are shareable, so code can be reused.

  • Improve the productivity of programmers

  • Data is safe through data abstraction.