Python—如何在不更改原始值的情况下从类返回值
我有一个类似的代码。我的问题是我的代码改变了原始分数Python—如何在不更改原始值的情况下从类返回值,python,class,return,Python,Class,Return,我有一个类似的代码。我的问题是我的代码改变了原始分数 class Fraction: """ This class represents one single fraction that consists of numerator and denominator """ def __init__(self, numerator, denominator): """ Constructor. Checks that the nume
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'
因此,基本上我的问题是,当我返回分数的补码或倒数时,它会替换原始分数,但我希望原始分数保持不变。在
补码和倒数方法中,不是对自身进行变异,而是创建分数的新实例并返回它
def complement(self):
""" Complement the fraction """
return Fraction(-1*self.__numerator, self. __denominator)
def reciprocal(self):
""" Reciprocal the fraction """
new_numerator=self.__denominator
new_denominator=self.__numerator
return Fraction(new_numerator, new_denominator)
使用列表
作为变量
,添加一些数据并检查步长。
def complement(self):
""" Complement the fraction """
return Fraction(-1*self.__numerator, self. __denominator)
def reciprocal(self):
""" Reciprocal the fraction """
new_numerator=self.__denominator
new_denominator=self.__numerator
return Fraction(new_numerator, new_denominator)