python - 如何在 return 语句中调用另一个本地函数内的本地函数?

标签 python python-2.7 python-3.x

当我运行 Fraction 类时,出现全局名称简化未定义的错误。虽然我在同一个类 Fraction 中定义了简化函数。独立运行时的简化功能运行完美。 Fraction 类在没有简化函数的情况下运行时,返回的结果未按预期简化。添加分数后尝试简化它时出现什么问题?

class Fraction:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    #simplify, simplifies the fraction.(2/4 to 1/2)
    #add, adds two fractions and then returns the simplified fraction.
    def __add__ (self, f):
        if (self.b == f.b) :
            return simplify(Fraction(self.a + f.a , f.b))
        else :
            pro = self.b * f.b
            return simplify(Fraction(self.a * f.b + f.a * self.b , pro))

最佳答案

由于 simplify 是本地函数,因此您应该使用语法 Class.function。 尝试运行简化,解释器将寻找全局 simplify 函数。

您应该尝试以下方法:

class Fraction:
    def __init__(self, a, b):
        self.a = a
        self.b = b

#simplify, simplifies the fraction.(2/4 to 1/2)
#add, adds two fractions and then returns the simplified fraction.
    def __add__ (self, f):
        if (self.b == f.b) :
            return Fraction.simplify(Fraction(self.a + f.a , f.b))
        else :
            pro = self.b * f.b
            return Fraction.simplify(Fraction(self.a * f.b + f.a * self.b , pro))

希望有帮助

关于python - 如何在 return 语句中调用另一个本地函数内的本地函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114229/

相关文章:

python - Django 发送邮件

python - Pytest中如何控制增量测试用例

python - 如何获取二进制表示为 1 的数字?

python-3.x - Pandas Indexing-View-Versus-Copy

django - 由于未知原因无法使用 pipenv 安装 Django(但可以使用 pip)

python-3.x - 2.7 安装脚本在 3.4 下失败

python - 用时间桶对 Python 中的数据进行分组

python - 如何获得形状为 (32,224,224) 的 np 数组,其中 [0] 包含 (244,224) 1's and [1] only 2' s?

python - 如何使用 selenium webdriver (python) 将鼠标移动 (pyautogui) 附加到 pyvirtualdisplay?

python - numpy bincount - 选择最大权重而不是对所有权重求和