Изменить класс объекта в __init __ () - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать свой собственный класс Fractions и свой собственный класс Numbers для проекта, над которым я работаю. Мне было интересно, как я могу изменить класс класса фракций на число, если знаменатель равен 1.

Когда я посмотрел на эту проблему, я наткнулся на приведение и попытался включить это в свой кодОднако класс все еще не изменился.

class Number():
    def __init__(self,number):
        if isinstance(number,int):
            self.number = number
        elif isinstance(number, Fraction) and number.denominator == 1:
            self.number = number.numerator
        else:
            raise TypeError()

class Fraction():
    def __init__(self, numerator, denominator=Number(1)):
        self.denominator = denominator
        self.numerator = numerator
        if self.denominator == 1:
            self.__class__ == Number

print(type(Fraction(5)))
#I expected to get <class '__main__.Number'> but instead got <class '__main__.Fraction'>

1 Ответ

0 голосов
/ 29 октября 2019

Использование __new()__ сработало, когда я вернул класс Number. Я нашел этот сайт очень полезным: нажмите здесь

...