我正在写一个Fraction
类,我正在尝试使用gcd(a,b)
在初始化时Fraction
目的。但是,当我尝试这样做时,如果没有Fraction
部分Fraction.gcd(a,b)
。我用了@staticmethod
在这里,但它绝对没有任何作用,即我的代码在没有它的情况下也能正常工作。
无论如何我可以打电话吗gcd
不放Fraction.
在它前面?在 Java 中,我通常会创建一个静态方法,然后调用它。我可以很容易地将 GCD 代码放入 init 中,但我想在这里学习!
我在这里错过了很多。谁能解释一下:静态方法、类中的辅助方法以及如何在类中使用各种方法?
class Fraction(object):
def __init__(self, a, b):
if Fraction.gcd(a, b) > 1:
d = Fraction.gcd(a, b)
self.num = a/d
self.denom = b/d
else:
self.num = a
self.denom = b
@staticmethod
def gcd(a,b):
if a > b: a,b = b,a
while True:
if b % a == 0: return a
a, b = b%a, a
def __repr__(self):
return str(self.num) + "/" + str(self.denom)
不要忘记,在 Python 中并不是所有东西都需要在类中。没有什么关于gcd
这使得它比独立函数更适合作为类方法:因此将其从类中取出。现在你可以打电话gcd(a, b)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)