GOOGLE ADS

jueves, 28 de abril de 2022

Python: asignación de método de clase a una variable

Tengo varios métodos en una clase y necesito llamar a uno específico. Intenté algo como esto, pero obtuve un AttributeError

class MyClass:
def first(a, b):
return a + b
def second(a, b):
return a * b
a = 2
b = 3
first_func = MyClass.first
second_func = MyClass.second
my_obj = MyClass()

Espero que algo de lo siguiente funcione, pero obtengo esta excepción:

my_obj.first_func(a, b) + my_obj.second_func(a, b) == 11

Entonces, ¿hay alguna manera de hacerlo?


Solución del problema

Dado que sus métodos no tienen selfparámetros, son "estáticos" y no dependen del objeto instanciado. Puedes llamar a tus funciones de esta manera:

first_func(a, b) # no my_obj

Si en realidad dependen del objeto, escribirías:

class MyClass:
def first(self, a, b):
return a + b
def second(self, a, b):
return a * b

Y pueden llamar al método "en" un objeto:

my_obj = MyClass()
my_obj.first(a, b)

O, con su notación inicial:

first_func = MyClass.first
first_func(my_obj, a, b)

(lo mismo para su secondmétodo)

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...