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'

所以基本上我的问题是,当我返回分数的补码或倒数时,它会替换原始分数,但我希望原始分数保持不变。

吉普赛人

在你的complementreciprocal方法中,不是改变自己,而是创建一个新的实例Fraction并返回它。

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不编辑原始模块的情况下从第三方Python模块向类添加方法

来自分类Dev

Python:如何在不循环的情况下获取给定值的dict键?

来自分类Dev

如何在不运行for循环的情况下使类的iter方法返回值?

来自分类Dev

在函数之外更改值而不返回值-python

来自分类Dev

Python C API在不构建元组的情况下返回多个值/对象

来自分类Dev

在Python 2中如何在不继承的情况下重用其他类的方法?

来自分类Dev

如何在不构建模块的情况下向Python公开C ++类

来自分类Dev

如何在不破坏python经典类的默认行为的情况下实现__getattr__方法

来自分类Dev

Python不返回值但显示值

来自分类Dev

我应该如何在不更改函数名称的情况下使用python装饰器?

来自分类Dev

如何在不按 Python3 中的按钮的情况下更改 tkinter 标签的文本?

来自分类Dev

在Python中,如何在不循环的情况下从另一个矩阵的值中分配一个稀疏矩阵的值?

来自分类Dev

如何在不运行方法的情况下模拟方法调用并返回值?

来自分类Dev

C++ | 如何在不每次都返回值的情况下循环 if 语句

来自分类Dev

Python。在不创建派生类的情况下覆盖方法,并调用原始方法

来自分类Dev

如何在不更改其值的情况下修改原始DateTime对象?

来自分类Dev

Python - 如何在用户交互后从类返回值

来自分类Dev

Python:处理返回值较大的情况

来自分类Dev

如何在不使用python循环的情况下比较列表中的值?

来自分类Dev

如何在Python分布中给定样本列表的情况下计算值的概率?

来自分类Dev

python matplotlib:如何在仅知道x值的情况下向曲线添加点标记?

来自分类Dev

我如何在不使用long if else语句的情况下替换python字典中的值

来自分类Dev

如何在python中给定值的情况下获取标签名称?

来自分类Dev

如何在不单击 tkinter python 的情况下读取单选按钮值

来自分类Dev

如何在不不断写入磁盘的情况下高频读取和累积传感器值(RPi 2 b +,MCP3304,Python)

来自分类Dev

如何在不不断写入磁盘的情况下高频读取和累积传感器值(RPi 2 b +,MCP3304,Python)

来自分类Dev

如何在Python中检查type()方法的返回值?

来自分类Dev

如何在python中存储和比较返回值

来自分类Dev

如何在 Python 中打印返回值

Related 相关文章

  1. 1

    如何在不编辑原始模块的情况下从第三方Python模块向类添加方法

  2. 2

    Python:如何在不循环的情况下获取给定值的dict键?

  3. 3

    如何在不运行for循环的情况下使类的iter方法返回值?

  4. 4

    在函数之外更改值而不返回值-python

  5. 5

    Python C API在不构建元组的情况下返回多个值/对象

  6. 6

    在Python 2中如何在不继承的情况下重用其他类的方法?

  7. 7

    如何在不构建模块的情况下向Python公开C ++类

  8. 8

    如何在不破坏python经典类的默认行为的情况下实现__getattr__方法

  9. 9

    Python不返回值但显示值

  10. 10

    我应该如何在不更改函数名称的情况下使用python装饰器?

  11. 11

    如何在不按 Python3 中的按钮的情况下更改 tkinter 标签的文本?

  12. 12

    在Python中,如何在不循环的情况下从另一个矩阵的值中分配一个稀疏矩阵的值?

  13. 13

    如何在不运行方法的情况下模拟方法调用并返回值?

  14. 14

    C++ | 如何在不每次都返回值的情况下循环 if 语句

  15. 15

    Python。在不创建派生类的情况下覆盖方法,并调用原始方法

  16. 16

    如何在不更改其值的情况下修改原始DateTime对象?

  17. 17

    Python - 如何在用户交互后从类返回值

  18. 18

    Python:处理返回值较大的情况

  19. 19

    如何在不使用python循环的情况下比较列表中的值?

  20. 20

    如何在Python分布中给定样本列表的情况下计算值的概率?

  21. 21

    python matplotlib:如何在仅知道x值的情况下向曲线添加点标记?

  22. 22

    我如何在不使用long if else语句的情况下替换python字典中的值

  23. 23

    如何在python中给定值的情况下获取标签名称?

  24. 24

    如何在不单击 tkinter python 的情况下读取单选按钮值

  25. 25

    如何在不不断写入磁盘的情况下高频读取和累积传感器值(RPi 2 b +,MCP3304,Python)

  26. 26

    如何在不不断写入磁盘的情况下高频读取和累积传感器值(RPi 2 b +,MCP3304,Python)

  27. 27

    如何在Python中检查type()方法的返回值?

  28. 28

    如何在python中存储和比较返回值

  29. 29

    如何在 Python 中打印返回值

热门标签

归档