所以我最近开始用Python进行面向对象编程,对于一个特定的问题,我必须编写一个处理分数的类。写一些常见的数学运算符(如减法和加法)的方法似乎一切都很顺利;但是,我还是坚持使用递归方法。在
class fractions():
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
def GreatestCommonDivisor(self, numerator, denominator): # This is the culprit
if numerator%denominator == 0:
return denominator
else:
return GreatestCommonDivisor(self, denominator, numerator%denominator)
当我在另一个需要找到分子最大除数的方法中调用最大公约数函数时,我得到:
^{pr2}$我把这个函数叫做:
X = fractions(9, 36)
X.GreatestCommonDivisor(X.numerator, X.denominator)
如果有人能告诉我这里的问题是什么,以及如何解决它,我将不胜感激,这是我第一次在类中使用递归函数。在
这一行是名称错误发生的地方:
应改为:
^{pr2}$GreatestCommonDivisor是一个实例方法,不是一个全局方法。你必须这么做
你似乎还没有完全掌握面向对象的概念。在
相关问题 更多 >
编程相关推荐