Вы можете принять произвольные параметры для run_function
и распространить их следующим образом:
def run_function(self, **kwargs):
self.return_val = self.function(**kwargs)
Но вам, вероятно, следует сделать более структурированное определение класса:
class my_class:
def __init__(self, func):
self.function = func
def run_function(self, **kwargs):
self.return_val = self.function(**kwargs)
Кроме того, оно предпочтительно напрямую возвращать значение из функций.
Полный код:
from dataclasses import dataclass
def add_two(p1, p2):
return (p1 + p2)
def multiply_trhee(p1, p2, p3):
return (p1*p2*p3)
@dataclass
class my_class:
def __init__(self, func):
self.function = func
def run_function(self, **kwargs):
return self.function(**kwargs)
a = my_class(add_two)
b = my_class(multiply_trhee)
print(a.run_function(p1= 1, p2 = 2))
print(b.run_function(p1 = 1, p2 = 2, p3 = 3))