尝试从 python 中的其他函数创建函数时出现错误

bug while trying to create a function from other functions in python

我一直在尝试创建一个计算器,出于实际原因,我尝试从单独的 python 文件中导入函数。它在某种程度上可以工作,但在尝试进行计算时会中断。错误是未定义添加,但我在导入函数时确实定义了它。这是代码:

class Calculator(object):

import a10 as add
import d10 as div
import m10 as mult
import s10 as sub

def choice(self):
    print("A. Addition\l B. Substraction\l C. Division\l D. Multiplication")
    xn = input("What do you want to do? ")
    if xn == "a":
        addition = add.addition
        x = self.addition()
        self.x = x
        return x
    elif xn == "b":
        subtraction = sub.subtraction
        z = self.subtraction()
        self.z = z
        return z
    elif xn == "c":
        division = div.division
        y = self.division()
        self.y = y
        return y
    elif xn == 'd':
        Multiplication = mult.multiplication
        v = self.Multiplication()
        self.v = v
        return v


objcalc = Calculator()
print(objcalc.choice())

这里是a10

def addition(self):
try:
    n = int(input("enter number: "))  
    n_for_add = int(input("What do you want to add on " + str(n) + " ? "))       
except ValueError: 
    print("you must enter an integer!") 
n_from_add = n + n_for_add
print(str(n) + " plus " + str(n_for_add) + " equals to " + str(n_from_add))  

s10

def subtraction(self):
    try:
        nu = int(input("enter number: "))
        nu_for_sub = int(input("What do you want to take off " + str(nu) + " ? "))
    except ValueError:
        print("you must enter an integer!")
    nu_from_sub = nu - nu_for_sub
    print(str(nu) + " minus " + str(nu_for_sub) + " equals to " + str(nu_from_sub))

m10

def Multiplication(self):
    try:
        numb = int(input("enter number: "))
        numb_for_multi = int(input("What do you want to multiply " + str(numb) + " on? "))
    except ValueError:
        print("you must enter an integer!")
    numb_from_multi = numb * numb_for_multi
    print(str(numb) + " multiplied by  " + str(numb_for_multi) + " equals to " + str(numb_from_multi))

d10

def division(self):
    try:
        num = int(input("enter number: "))
        num_for_div = int(input("What do you want to divide " + str(num) + " off? "))
    except ValueError:
        print("you must enter an integer!")
    num_from_div = num / num_for_div
    print(str(num) + " divided by " + str(num_for_div) + " equals to " + str(num_from_div))

if语句中,像这样:

if xn == "a":
    addition = add.addition
    x = self.addition()
    self.x = x
    return x

addition 被创建为函数 choice 的局部变量,但您随后将 x 设置为 self.addition(),这未定义。

如果你打算写 x = add.addition() 那么请注意你的 addition 函数不会 return 任何东西,它只是打印出一个值。其他功能也一样 - none 其中 return 任何东西。所以 self.addition 没有定义, x 将是一个 NoneType 对象

你的 additionsubtraction 和其他函数也将 self 作为参数,当它们不是 class 中的方法时,所以这不会很有道理。