Métodos enlazados python

Un método enlazado es el que depende de la instancia de la clase como primer argumento. Pasa la instancia como el primer argumento que se utiliza para acceder a las variables y funciones. En Python 3 y versiones más recientes de python, todas las funciones de la clase son métodos vinculados de forma predeterminada.

Entendamos este concepto con un ejemplo:

# Python code to demonstrate
# use of bound methods
  
class A:
  
    def func(self, arg):
        self.arg = arg
        print("Value of arg = ", arg)
  
  
# Creating an instance
obj = A()  
  
# bound method
print(obj.func)

Producción:

< bound method A.func of <__main__.A object at 0x7fb81c5a09e8>>

Aquí,

 obj.func(arg) is translated by python as A.func(obj, arg).

La instancia objse pasa automáticamente como primer argumento a la función llamada y, por lo tanto, el primer parámetro de la función se utilizará para acceder a las variables/funciones del objeto.

Veamos otro ejemplo del método Bound.

# Python code to demonstrate
# use of bound methods
  
  
class Car:
    # Car class created
    gears = 5
  
    # a class method to change the number of gears 
    @classmethod
    def change_gears(cls, gears):
        cls.gears = gears
  
  
# instance of class Car created
Car1 = Car()
  
  
print("Car1 gears before calling change_gears() = ", Car1.gears)
Car1.change_gears(6) 
print("Gears after calling change_gears() = ", Car1.gears)
  
# bound method
print(Car1.change_gears)

Producción:

Car1 gears before calling change_gears() =  5
Gears after calling change_gears() =  6
<bound method Car.change_gears of <class '__main__.Car'>>

El código anterior es un ejemplo de un método de clase . Un método de clase es como un método enlazado excepto que la clase de la instancia se pasa como argumento en lugar de la instancia misma. Aquí, en el ejemplo anterior, cuando llamamos Car1.change_gears(6), la clase ‘Car’ se pasa como primer argumento.

Publicación traducida automáticamente

Artículo escrito por Soham_Lanke y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *