I would like to create a method outside a class that works with some self class variables, and then add it to the class when is instanciated.
Something like this:
used_method = int(input())
if used_method == 1:
def outside_method(var1=self.var1, var2=self.var2):
return (var1 + var2)
elif used_method == 2:
def outside_method(var1=self.var1, var2=self.var2, var3=self.varx):
return (var1 - var2) * var3
class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0
def _method1(self, x, y):
a = x + y
b = x * y
return a, b
def run(self)
self.var1, self.var2 = self._method1(self.varx, self.vary)
target = outside_method()
print(target)
So, when:
used_method = 1
myobject = myClass()
myobject.run()
Output should be 11, but when:
used_method = 2
myobject = myClass()
myobject.run()
Output should be -3.
This is because the class is very big and I want to allow the user to customize the outside_method that works with self variables that change on each iteration of the run method.
Can somebody help me with this please?
Thanks in advance.
Example 1:
used_method = int(input())
if used_method == 1:
def outside_method(self):
return self.var1 + self.var2
elif used_method == 2:
def outside_method(self):
return (self.var1 - self.var2) * self.varx
class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0
def _method1(self, x, y):
a = x + y
b = x * y
return a, b
def run(self):
self.var1, self.var2 = self._method1(self.varx, self.vary)
target = outside_method(self)
print(target)
Example 2:
used_method = int(input())
if used_method == 1:
def outside_method(var1, var2):
return var1 + var2
elif used_method == 2:
def outside_method(var1, var2, var3):
return (var1 - var2) * var3
class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0
def _method1(self, x, y):
a = x + y
b = x * y
return a, b
def run(self):
self.var1, self.var2 = self._method1(self.varx, self.vary)
args = [self.var1, self.var2]
target = outside_method(*((*args, self.varx) if used_method == 2 else args))
print(target)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With