[Aprender python desde cero] 48. Explicación detallada de herencia y herencia múltiple en Python

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.
inserte la descripción de la imagen aquí

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 Doguna clase hereda Animaly XiaoTianQuanhereda de Doguna clase, entonces XiaoTianQuanla clase tiene Animaltodas 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 puede Animalllamar al método run()?
  • XiaoTianQuan¿ Puedo llamar Catal 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.

inserte la descripción de la imagen aquí

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.
    inserte la descripción de la imagen aquí

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)

objectEs la clase base de todos los objetos en Python y proporciona algunas propiedades y métodos integrados, que se pueden dirver mediante funciones.

  • Clase de estilo nuevo: se recomienda utilizar la clase objectcomo clase base.
  • Clase clásica: una clase que no se objectconsidera 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] La biblioteca Python tkinter implementa un programa GUI para el convertidor de unidades de peso

[python] Use Selenium para obtener entradas (2023 Blog Star)

[python] Use Selenium y Chrome WebDriver para obtener información de artículos en [Tencent Cloud Studio Practical Training Camp]

Use el estudio Tencent Cloud Cloud para realizar la programación Baidu AI para realizar el reconocimiento de texto

[Diversión con la serie Python [Xiaobai debe ver] Rastreador de subprocesos múltiples de Python: descargue imágenes de sitios web de paquetes de emoticonos

[Serie Juega con Python] [Imprescindible para Xiaobai] Usa Python para rastrear datos históricos de Shuangseqiu y analizarlos visualmente

[Jugar con la serie python] [Imprescindible para Xiaobai] Utilice la tecnología de rastreo de Python para obtener una IP proxy y guardarla en un archivo

[Imprescindible para Xiaobai] Ejemplo de síntesis de imágenes de Python usando la biblioteca PIL para realizar la síntesis de múltiples imágenes por rangos y columnas

[Xiaobai debe ver] El combate real del rastreador de Python descarga imágenes de diosas en lotes y las guarda localmente

[Xiaobai debe ver] Análisis detallado del generador de nube de palabras de Python e implementación de código

[Xiaobai debe ver] Python rastrea un ejemplo de datos de jugadores de la NBA

[Imprescindible para Xiaobai] Código de muestra para rastrear y guardar audio del Himalaya usando Python

[Imprescindible para Xiaobai] Realización técnica del uso de Python para descargar imágenes de piel de League of Legends en lotes

[Xiaobai debe ver] Visualización y procesamiento de datos del rastreador de Python

[Imprescindible para Xiaobai] Programa rastreador de Python para obtener fácilmente imágenes de piel de héroe de King of Glory

[Imprescindible para Xiaobai] Use Python para generar una lista personalizada de documentos de Word

[Imprescindible para Xiaobai] Combate de rastreadores de Python: obtenga imágenes del sitio web de Onmyoji y guárdelas automáticamente

Xiaobai debe ver la serie de sistemas de gestión de bibliotecas: código de muestra para las funciones de inicio de sesión y registro

100 casos del combate real de Xiaobai: un programa completo y simple de sentencia ganadora de la lotería Shuangseqiu, adecuado para los primeros pasos de Xiaobai

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

Guía de introducción a los rastreadores (8): Escriba programas rastreadores de datos meteorológicos para el análisis visual

Guía introductoria a los rastreadores (7): Uso de Selenium y BeautifulSoup para rastrear la película Douban Top250 Ejemplo de explicación [Reptile Xiaobai must watch]

Guía de inicio de rastreadores (6): Anti-rastreadores y habilidades avanzadas: proxy de IP, disfraz de agente de usuario, verificación de inicio de sesión de omisión de cookies y herramientas de identificación de código de verificación

Guía introductoria a los rastreadores (5): rastreadores distribuidos y control de concurrencia [Métodos de implementación para mejorar la eficiencia del rastreo y el control de la racionalidad de las solicitudes]

Introducción a los rastreadores (4): la mejor forma de rastrear páginas web dinámicas con Selenium y API

Guía de introducción a los rastreadores (3): solicitudes de red de Python y estrategias comunes contra los rastreadores

Introducción a los rastreadores (2): cómo utilizar expresiones regulares para la extracción y el procesamiento de datos

Primeros pasos con los reptiles (1): aprenda los conceptos básicos y las habilidades de los reptiles

Aplicación del modelo de aprendizaje profundo en el reconocimiento de imágenes: práctica de conjuntos de datos CIFAR-10 y análisis de precisión

Conceptos básicos de programación orientada a objetos de Python y código de muestra

Guía de operación de la base de datos MySQL: aprenda a usar Python para agregar, eliminar, modificar y consultar operaciones

Guía de operación de archivos de Python: codificación, lectura, escritura y manejo de excepciones

Utilice Python y Selenium para automatizar el rastreo#【Convocatoria especial para el Festival del Bote del Dragón】Explore la última tecnología, y el futuro será gracias a usted"Zong" #Artículos contribuidos

Tutorial multihilo y multiproceso de Python: análisis completo, casos de código y habilidades de optimización

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 introductorio de Python: domine los conocimientos básicos de for loop, while loop, operación de cadenas, lectura y escritura de archivos y manejo de excepciones

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

[Último en 2023] Explicación detallada de seis esquemas principales para mejorar el modelo de índice de clasificación

Introducción a los conceptos básicos y habilidades avanzadas de programación de Python, desarrollo web, análisis de datos y aprendizaje automático e inteligencia artificial

Gráfico de resultados de predicción con 4 métodos de regresión: regresión vectorial, regresión de bosque aleatorio, regresión lineal, regresión de vecinos más cercanos K

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/132357453
Recomendado
Clasificación