Reputation: 3
I just started learning python few days ago, and the book I read is "Python CRASH COURSE"
I don't know what I missed in this code, please help me!
class mathfunctions:
def addition(self,num1,num2):
return num1+num2
def subtraction(self,num1,num2):
return num1-num2
def multiply(self,num1,num2):
return num1*num2
def divide(self,num1,num2):
return num1/num2
class actiondeclarer():
action = None
x = None
y = None
functions = mathfunctions()
def __init__(self,actionnum,num1,num2):
self.action = actionnum
self.x = num1
self.y = num2
self.actionpicking()
def actionpicking(self):
if self.action is 1:
print("sum is ",self.functions.addition(self.x,self.y))
elif self.action is 2:
print("difference is ",self.functions.subtraction(self.x,self.y))
elif self.action is 3:
print("multitude is ",self.functions.multiply(self.x,self.y))
elif self.action is 4:
print("divide is ",self.functions.divide(self.x,self.y))
else:
print("invalid")
checker = actiondeclarer(1,5,10)
the error message is AttributeError: 'actiondeclarer' object has no attribute 'actionpicking'
By the way, if the code were correct, the result "sum is 15" can be shown without typing print(checker), right?
Upvotes: 0
Views: 197
Reputation: 70297
Your indentation is off.
def __init__(self,actionnum,num1,num2):
# Code
self.actionpicking()
def actionpicking(self):
# Code
This defines a closure locally within __init__
. You want actionpicking
's indentation level to match that of __init__
.
def __init__(self,actionnum,num1,num2):
# Code
self.actionpicking()
def actionpicking(self):
# Code
Upvotes: 2