2013-12-09 67 views
2

我很新的蟒蛇,我试图创建一个基本的Python计算器类型错误:这个构造函数没有参数

#!/usr/bin/env python 

class Calculator: 
    def __int__(self,x,y): 
     self.x = x 
     self.y = y 
    def add(self): 
     return self.x + self.y 
    def sub(self): 
     return self.x - self.y 
    def multi(self): 
     return self.x * self.y 
    def div(self): 
     return self.x/self.y 

    def convert(self,a,b): 
     try: 
      int_a = int(a) 
      int_b = int(b) 
     except ValueError: 
      int_a = float(a) 
      int_b = float(b) 
     return int_a,int_b 

run = True 

while run: 
    print "Please choose what you'd like to do:" 
    print "0: Addition" 
    print "1: Subtraction" 
    print "2: Multiplication" 
    print "3: Division" 
    print "4: Quit Application" 

    choice = raw_input() 

    if choice == "0": 
     str_a = raw_input("Enter 1st number : ") 
     str_b = raw_input("Enter 2nd number : ") 
     c = Calculator(str_a,str_b) 
     c.add() 

,但我得到的错误象下面这样:

c = Calculator(str_a,str_b) 
TypeError: this constructor takes no arguments 

请任何人帮我解决这个问题

+10

拼写错误'__init__'。 – Blender

+3

这个问题似乎是脱离主题,因为它是关于初始化程序名称中的简单错字。 –

+0

HI 感谢您的帮助。 但是我运行这个,我输入了2个数字,在add()上我使用了return。但我在屏幕上没有得到任何答案。 – bentech4u

回答

1

这里是我期待你需要的解决方案,

#!/usr/bin/env python 

    class Calculator: 
     def __init__(self,x,y): 
      self.x = int(x) 
      self.y = int(y) 
     def add(self): 
      return self.x + self.y 
     def sub(self): 
      return self.x - self.y 
     def multi(self): 
      return self.x * self.y 
     def div(self): 
      return self.x/self.y 

     def convert(self,a,b): 
      try: 
       int_a = int(a) 
       int_b = int(b) 
      except ValueError: 
       int_a = float(a) 
       int_b = float(b) 
      return int_a,int_b 

    run = True 

    while run: 
     print "Please choose what you'd like to do:" 
     print "0: Addition" 
     print "1: Subtraction" 
     print "2: Multiplication" 
     print "3: Division" 
     print "4: Quit Application" 

     choice = raw_input() 

     if choice == "0": 
      str_a = raw_input("Enter 1st number : ") 
      str_b = raw_input("Enter 2nd number : ") 
      c = Calculator(str_a,str_b) 
      print c.add() 
-1

请使用input代替raw_input

str_a = input("Enter 1st number : ") 
    str_b = input("Enter 2nd number : ") 

raw_input默认情况下需要的字符串。

+2

-1:这是2.x特有的,在2.x中是危险的*,并且忽略了OP已经实现了一些显式转换的事实(实际上并不是使用* it ),这是首选。 –

相关问题