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 self
pará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 second
método)
No hay comentarios.:
Publicar un comentario