私はPythonが初めてなので、この問題が発生する理由を見つけることができなかったので、このばかげた問題を手伝ってくれることを願っています. したがって、合計と減算を行う Calculator というクラスを持つ calcoo.py というファイルがあり、そのクラスを CalculatorCHild という別のクラス (同じディレクトリの別の py ファイルにあります) に継承し、Calculator の動作を拡張します。除算と乗算のメソッドを追加します。これまでのところ機能しますが、合計すると結果が重複し、プログラムの残りの部分 calcco.py がクラス Calculator 内にあると見なされるようです。だからここに私のコードがあります:
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."
カルコチャイルド.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 が 2 回出力され、乗算すると次のように出力されます。
Error, operation not supported
6.3
したがって、CalculatorCHild は sumatory メソッドと substract メソッドを継承するだけでなく、クラスの外部にある if 句も実行するようです。解決策を見つけようとしましたが、同じ結果が得られ続けます。誰かが私を助けてくれることを願っています、事前に感謝します。