English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderá a través de ejemplos la programación orientada a objetos (OOP) en Python y sus conceptos básicos.
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:
Herencia | El 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. |
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.
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.
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.
Los métodos son funciones definidas dentro del cuerpo de la clase. Se utilizan para definir el comportamiento de los objetos.
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).
继承是一种创建新类的方法,用于在不修改现有类的细节的情况下使用它。新形成的类是一个派生类(或子类)。类似地,现有类是基类(或父类)。
# 基类 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 "__".
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 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.
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.
Make programming simple and effective.
Classes are shareable, so code can be reused.
Improve the productivity of programmers
Data is safe through data abstraction.