Python 从另一个py文件的类导入方法时出现重复结果

Python 从另一个py文件的类导入方法时出现重复结果,python,inheritance,python-import,Python,Inheritance,Python Import,我是python新手,所以我希望你能帮助我解决这个愚蠢的问题,因为我找不到任何原因导致这个问题发生。因此,我有一个名为calcoo.py的文件,其中有一个名为Calculator的类,用于求和和和减法,然后我在另一个名为CalculatorCHild的类(位于同一目录的另一个py文件中)中继承了该类,该类只是扩展了计算器添加除法和乘法方法的行为。到目前为止,它还可以工作,但在计算时会给我重复的结果,就像它认为程序calcco.py的其余部分在类计算器中一样。这是我的代码: calcoo.py文件

我是python新手,所以我希望你能帮助我解决这个愚蠢的问题,因为我找不到任何原因导致这个问题发生。因此,我有一个名为calcoo.py的文件,其中有一个名为Calculator的类,用于求和和和减法,然后我在另一个名为CalculatorCHild的类(位于同一目录的另一个py文件中)中继承了该类,该类只是扩展了计算器添加除法和乘法方法的行为。到目前为止,它还可以工作,但在计算时会给我重复的结果,就像它认为程序calcco.py的其余部分在类计算器中一样。这是我的代码:

calcoo.py文件:

#! /usr/bin/python
# -*- coding: utf-8 -*-
import sys
operator1= sys.argv[1]
operation= sys.argv[2]
operator2= sys.argv[3]
try:
    operator1 = float(sys.argv[1]) 
    operator2 = float(sys.argv[3])
except ValueError:
    sys.exit("Error: Non numerical Parameters")

class Calculator():

    def sumatory(self):                                   
        return float(operator1) + float(operator2)
    def substract(self):
        return float(operator1) - float(operator2)

if operation == "sum":
    print Calculator().sumatory()
elif operation == "substract":
     print Calculator().substract()
else:
    print "Error, operation not supported."
calcoochild.py

#! /usr/bin/python
# -*- coding: utf-8 -*-
import sys
operator1= sys.argv[1]
operation= sys.argv[2]
operator2= sys.argv[3]
try:
    operator1 = float(sys.argv[1]) 
    operator2 = float(sys.argv[3])
except ValueError:
    sys.exit("Error: Non numerical Parameters")
from calcoo import Calculator 
class CalculatorChild(Calculator):
    def multiply(self):                                  
        return float(operator1) * float(operator2)
    def divide(self):
        if operator2 == 0:
            print "Division by zero is not allowed."
        else:
            return float(operator1) / float(operator2)

if operation == "sum":
    print CalculatorChild().sumatory()
elif operation == "substract":
     print CalculatorChild().substract()

elif operation == "multiply":
    print CalculatorChild().multiply()

elif operation == "divide":
     print CalculatorChild().divide()

else:
    print "Error, operation not supported."
当我执行calcoo.py时,一切正常,但当我执行python calcoochild.py 3 sum 2.1时,它会打印5.1两次,如果我写乘法,它会打印:

Error, operation not supported
6.3

这就像CalculatorCHild不仅继承了Summary和substract方法,还执行了if子句,它在类之外,我试图找到一个解决方案,但它一直给我相同的结果。我希望有人能帮助我,提前谢谢你。

当你导入
calcoo
时,所有顶层的代码都会执行。这包括解析
sys.argv

将只应在以脚本形式运行模块时执行的内容移动到由模块名称测试保护的块中;如果名称为
\uuuu main\uuuu
,则代码将作为脚本运行,否则将作为模块导入:

class Calculator():
    def sumatory(self):                                   
        return float(operator1) + float(operator2)
    def substract(self):
        return float(operator1) - float(operator2)

if __name__ == '__main__':
    import sys
    operator1= sys.argv[1]
    operation= sys.argv[2]
    operator2= sys.argv[3]
    try:
        operator1 = float(sys.argv[1]) 
        operator2 = float(sys.argv[3])
    except ValueError:
        sys.exit("Error: Non numerical Parameters")

    if operation == "sum":
        print Calculator().sumatory()
    elif operation == "substract":
         print Calculator().substract()
    else:
        print "Error, operation not supported."

现在,当您导入
calcoo
时,仅定义
计算器
类;其余的代码将不会运行。

即将回答类似的问题