Using an instance method inside another instance method allowed in Python?

26 Views Asked by At

I have created a class Rational with multiple methods. If it is initialized as follows

r = Rational(49, 168)

I want this to be true:

print(r.get_num() == 7 and r.get_denom() == 24)  

I've written this code, which crashes, saying 'NameError: name 'highest_common_denominator' is not defined.

class Rational:

def __init__(self, numerator, denominator=1):
    self.numerator = numerator
    self.denominator = denominator

def cd_numerators(self):
    list_cd_numerators = []
    for i in range(1, self.numerator):
        if self.numerator % i == 0:
            list_cd_numerators.append(i)
    return list_cd_numerators

def cd_denominators(self):
    list_cd_denominators = []
    for i in range(1, self.denominator):
        if self.denominator % i == 0:
            list_cd_denominators.append(i)
    return list_cd_denominators

def highest_common_denominator(self, a, b):
    highest_common_denominator1 = 1
    for i in a:
        if i in b:
            highest_common_denominator1 = i
    return highest_common_denominator1

def get_num(self):
    common_denominator = highest_common_denominator(cd_numerators, cd_denominators)
    numerator = self.numerator / common_denominator
    self.numerator = numerator
    return self.numerator

def get_denom(self):
    common_denominator = highest_common_denominator(cd_numerators, cd_denominators)
    denominator = self.denominator / common_denominator
    self.denominator == denominator
    return self.denominator

I cannot understand what I'm doing wrong and would be appreciative of some help.

0

There are 0 best solutions below