I have below definition:
def fun1(x) :
return x + 2
class my_class :
def fun1(x) :
return x + 22
def fun2(x) :
return fun1(x) + 33
print(my_class.fun2(10))
However this returns 45, whereas I am expecting 65 (10 + 22 + 33).
Where am I making a mistake?
>Solution :
This can be a way out but, not a recommended style:
class my_class:
def fun1(x) :
return x + 22
def fun2(x) :
return my_class.fun1(x) + 33
my_class.fun2(10)
Another unorthodox way:
class my_class:
def fun1(x) :
return x + 22
@classmethod
def fun2(cls,x) :
return cls.fun1(x) + 33
my_class.fun2(10)
The best way I can think of:
def fun1(x) :
return x + 2
class my_class :
def fun1(self,x) :
return x + 22
def fun2(self,x) :
return self.fun1(x) + 33 #refering to instance method self.fun1
print(my_class().fun2(10)) # my_class() is a object