0
私はそのようなコードを持っています。そして私の問題は、私のコードが元の部分を変更することです。Python - 元の値を変更せずにクラスから値を返す方法
class Fraction:
""" This class represents one single fraction that consists of
numerator and denominator """
def __init__(self, numerator, denominator):
"""
Constructor. Checks that the numerator and denominator are of
correct type and initializes them.
:param numerator: fraction's numerator
:param denominator: fraction's denominator
"""
if not isinstance(numerator, int) or not isinstance(denominator, int):
raise TypeError
elif denominator == 0:
raise ValueError
self.__numerator = numerator
self.__denominator = denominator
def return_string(self):
""" Returns a string-presentation of the fraction in the format
numerator/denominator """
if self.__numerator * self.__denominator < 0:
sign = "-"
else:
sign = ""
return "{:s}{:d}/{:d}".format(sign, abs(self.__numerator),
abs(self.__denominator))
def complement(self):
""" Complement the fraction """
self.__numerator=-1*self.__numerator
return self
def reciprocal(self):
""" Reciprocal the fraction """
new_numerator=self.__denominator
new_denominator=self.__numerator
self.__numerator=new_numerator
self.__denominator=new_denominator
return self
だから私のコードは
>>> frac = Fraction(-2, 4)
>>> frac.return_string()
'-2/4'
>>> complement = frac.complement()
>>> complement.return_string()
'2/4'
>>> reciprocal = frac.reciprocal()
>>> reciprocal.return_string()
'4/2'
を与えます。しかし、それは私に
>>> frac = Fraction(-2, 4)
>>> frac.return_string()
'-2/4'
>>> complement = frac.complement()
>>> complement.return_string()
'2/4'
>>> reciprocal = frac.reciprocal()
>>> reciprocal.return_string()
'-4/2'
を与える必要がありますので、基本的に私の問題は、私は分数の補数または逆数を返したときに、それは、元の分数を置き換えることです元の部分は同じままにしておきたい。
'variable'に' list'を使用し、いくつかのデータを追加し、stepの長さをチェックします。 – dsgdfg