Python一次在类中设置变量

时间:2018-06-29 02:41:14

标签: python-3.x oop

我正在尝试在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必须在此类中,因为它会在整个课程中使用。

2 个答案:

答案 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

希望有帮助!