我正在尝试在Fraction类中编写一个方法,将每个分数的所有分母相乘。我试图通过将每个数字乘以一个称为CD的变量来做到这一点,并且我希望CD最初为1。如何将其设置为1,但这只是第一次?我尝试在班上的几个部分进行定义,但没有任何效果。
class Fraction(object):
#define CD = 1 somewhere
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
def findCD(self):
CD *= self.denominator
return CD
fractions = [Fraction(1,2), Fraction(1,4), Fraction(9,20),
Fraction(5,6), Fraction(3,8), Fraction(2,9)]
for i in range(0, len(fractions)):
fractions[i].findCD()
我通常会遇到CD始终为1的问题,从而返回相应分母的精确值。 CD必须在此类中,因为它会在整个课程中使用。
答案 0 :(得分:0)
使用self
在班级执行此操作:在__init__
中初始化CD,然后返回self.CD
而不是CD
:
class Fraction(object):
def __init__(self, numerator, denominator):
self.CD = 1 # do it here, add one more parameter, if needed
self.numerator = numerator
self.denominator = denominator
def findCD(self):
self.CD *= self.denominator
return self.CD
fractions = [Fraction(1,2), Fraction(1,4), Fraction(9,20),
Fraction(5,6), Fraction(3,8), Fraction(2,9)]
result = [f.findCD() for f in fractions]
print(result)
# Or, to output updated CD
r = [f.CD for f in fractions]
print(r)
答案 1 :(得分:0)
您可以将其传递给findCD,而不是将分子和分母传递给 init 。 在 init 中定义self.CD并在findCD中覆盖它,以便仅在创建类时将self.CD初始化为1。
type PDW = ^dword; ,inc(psi,4); and dec(psj,psStep);
输出
class Fraction(object):
def __init__(self):
self.CD = 1
def findCD(self, numerator, denominator):
self.CD = self.CD * denominator
return(self.CD)
fractions = [(1,2), (1,4), (9,20), (5,6), (3,8), (2,9)]
fraction = Fraction()
for i in fractions:
print(fraction.findCD(i[0], i[1]))
答案是特定于您要实现的目标。如果您想专门了解“如何只设置一次变量”?您可以浏览此link
希望有帮助!