在__init __()中更改对象的类

问题描述 投票:0回答:1

我正在尝试为我正在研究的项目创建自己的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'>
class casting python-3.7
1个回答
0
投票

当我返回Number的类时,使用__new()__起作用。我发现此网站非常有用:click here

© www.soinside.com 2019 - 2024. All rights reserved.