下面我创建了一个类。我试图在Fraction对象的初始化中使用方法gcd(a,b)。但是,当我尝试这样做时,它将无法在“Fraction.gcd(a,b)”的“分数”部分中工作。我在这里使用了@staticmethod,但它绝对没有任何问题,即我的代码在没有它的情况下也是一样的。如何在类中使用静态/辅助方法?
反正我有可以打电话GCD不把“分数”。在它前面。在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)
“在Java中我会......” - 你的第一个错误。 Python不是Java。它不甚密切。 – delnan
是的,这不是Java,函数可以存在于一个类之外。 –