Directorio de artículos
En Python, la herencia se puede dividir en herencia única, herencia múltiple y herencia multinivel.
herencia única
Una subclase hereda solo una clase principal y el concepto de herencia significa que la subclase obtiene todos los métodos y propiedades de la clase principal.
sintaxis de herencia
class 类名(父类名):
pass
La subclase hereda de la clase principal y puede disfrutar de los métodos ya encapsulados en la clase principal sin redefinirlos. Las subclases deben encapsular propiedades y métodos específicos de la subclase de acuerdo con sus responsabilidades.
La herencia es transitiva.Por ejemplo, si Dog
una clase hereda Animal
y XiaoTianQuan
hereda de Dog
una clase, entonces XiaoTianQuan
la clase tiene Animal
todas las propiedades y métodos de la clase.
La subclase tiene todas las propiedades y métodos encapsulados en la clase principal y la clase principal de la clase principal.
Preguntas para pensar:
XiaoTianQuan
¿ Se puedeAnimal
llamar al métodorun()
?XiaoTianQuan
¿ Puedo llamarCat
al método en él?
herencia múltiple
Las subclases pueden tener varias clases principales y tener todas las propiedades y métodos de las clases principales.
formato gramatical
class 子类名(父类名1, 父类名2, ...)
pass
Tenga en cuenta lo siguiente cuando utilice la herencia múltiple
- Si hay métodos con el mismo nombre en diferentes clases principales, ¿a qué método de clase principal se llamará cuando el objeto de la subclase llame al método? Tales situaciones confusas deben evitarse tanto como sea posible. Si hay atributos o métodos con el mismo nombre entre varias clases principales, se debe evitar la herencia múltiple tanto como sea posible.
MRO en Python
Python proporciona un atributo incorporado para las clases __mro__
que se puede usar para ver el orden de búsqueda de los métodos. MRO es la abreviatura de orden de resolución de método, que se utiliza principalmente para juzgar el orden de llamada de los atributos del método durante la herencia múltiple.
El código de ejemplo es el siguiente:
print(C.__mro__)
La salida es:
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
Al llamar al método, __mro__
busque de acuerdo con los resultados de salida de izquierda a derecha:
- Si se encuentra un método en la clase actual, se ejecuta directamente sin buscar hacia abajo.
- Si no lo encuentra, buscará secuencialmente si hay un método correspondiente en la siguiente clase, y si lo encuentra, se ejecutará directamente sin continuar buscando hacia abajo.
- Si se encuentra la última clase y aún no se encuentra el método, el programa informará un error.
Clases de estilo nuevo y estilo antiguo (clásico)
object
Es la clase base de todos los objetos en Python y proporciona algunas propiedades y métodos integrados, que se pueden dir
ver mediante funciones.
- Clase de estilo nuevo: se recomienda utilizar la clase
object
como clase base. - Clase clásica: una clase que no se
object
considera una clase base y no se recomienda.
Al definir una clase después de Python 3.x, si no se especifica una clase principal, la clase heredará de ella de forma predeterminada object
. Por lo tanto, las clases definidas en Python 3.x son todas clases de nuevo estilo.
Al definir una clase en Python2.x, si no se especifica una clase principal, no se heredará de object
.
Para garantizar que el código pueda ejecutarse tanto en Python2.x como en Python3.x, al definir una clase, si una clase no tiene una clase principal, se recomienda heredarla de manera uniforme object
.
Código de muestra:
class 类名(object):
pass
Caso avanzado
[Python] Python se da cuenta del juego de adivinanzas: ¡desafía tu inteligencia y tu suerte!
[python] Use Selenium para obtener entradas (2023 Blog Star)
[Xiaobai debe ver] Python rastrea un ejemplo de datos de jugadores de la NBA
[Xiaobai debe ver] Visualización y procesamiento de datos del rastreador de Python
[Imprescindible para Xiaobai] Use Python para generar una lista personalizada de documentos de Word
Procesamiento y visualización de datos geoespaciales usando geopandas y shapely (.shp)
Utilice selenio para rastrear los datos de la lista de películas de Maoyan
Explicación detallada del principio y la implementación del algoritmo de mejora de imagen Retinex
Primeros pasos con los reptiles (1): aprenda los conceptos básicos y las habilidades de los reptiles
Conceptos básicos de programación orientada a objetos de Python y código de muestra
Guía de operación de archivos de Python: codificación, lectura, escritura y manejo de excepciones
Conjunto de herramientas de automatización de Selenium - Guía completa y tutoriales
Tutorial de los conceptos básicos del rastreador web de Python avanzados al combate real
Tutorial de procesamiento y análisis de datos de Pandas: desde lo básico hasta el combate real
Explicación detallada de los tipos de datos de uso común y las operaciones relacionadas en Python