"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿En qué se diferencian las funciones, los métodos independientes y los métodos vinculados en el sistema de resolución de métodos de Python?

¿En qué se diferencian las funciones, los métodos independientes y los métodos vinculados en el sistema de resolución de métodos de Python?

Publicado el 2024-11-10
Navegar:916

How do Functions, Unbound Methods, and Bound Methods Differ in Python\'s Method Resolution System?

Revelando la naturaleza de las funciones, los métodos independientes y los métodos vinculados

El concepto de clases y métodos es fundamental para los paradigmas de programación orientada a objetos . Comprender los matices y las relaciones entre funciones, métodos no vinculados y métodos vinculados es crucial para dominar las complejidades del sistema de resolución de métodos de Python.

Definición de las entidades

  • Funciones: Creadas usando la declaración def, las funciones son unidades de código independientes sin asociación directa con ningún clase.
  • Métodos independientes: Cuando una función pasa a formar parte de una definición de clase, se transforma en un método independiente. Esta transición ocurre automáticamente en Python 2 pero está obsoleta en Python 3.
  • Métodos vinculados: Creados al acceder a un método en una instancia de clase, los métodos vinculados reciben implícitamente la instancia como su primer parámetro ( self).

Transformaciones y accesibilidad

  • Función sin consolidar Método: Usar tipos.MethodType o acceder a una función dentro del cuerpo de una clase la convierte efectivamente en un método independiente.
  • Método independiente a método vinculado: Acceder a un método independiente en una clase La instancia da como resultado la creación de un método vinculado.
  • Función al método vinculado: De manera análoga al paso anterior, acceder directamente a una función en una instancia de clase genera un método vinculado.

Diferencias clave

  • Conciencia de clase: Un método independiente conlleva conocimiento de la clase a la que pertenece a, mientras que las funciones y los métodos vinculados carecen de este conocimiento.
  • Acceso instanciado: A diferencia de los métodos independientes, que requieren una instancia para ejecutarse, las funciones y Los métodos vinculados se pueden llamar directamente.

Equivalencia y uso

Tanto en Python 2 como en Python 3, las siguientes expresiones son funcionalmente equivalentes:

f1(C())
C.f1(C())
C().f1()

Vincular una función a una instancia crea una versión modificada donde el primer parámetro se establece inherentemente en la instancia dada. Esencialmente, este método vinculado se comporta de manera idéntica a las siguientes formas alternativas:

lambda *args, **kwargs: f1(C(), *args, **kwargs)
functools.partial(f1, C())

De libre a enlazado

Una instancia de Python 2 de una clase no tiene ningún atributo directo correspondiente a los métodos independientes, que son en lugar de eso, se puede recuperar a través del atributo __dict__ de la propia clase. Sin embargo, acceder a un método independiente en una instancia da como resultado su conversión automática a un método vinculado.

Conclusión

Comprender las distinciones entre funciones, métodos independientes y métodos vinculados le permite utilizar eficazmente el mecanismo de resolución de métodos de Python. Comprender los mecanismos de vinculación y transformación le permitirá navegar con facilidad por las complejidades de la codificación orientada a objetos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3