所以我正在制作一个复数类的我自己的版本,它作为虚数的表示:复数(a,b),其中a+bi。你知道吗
问题是,我想根据给出的论点返回其他东西。我很确定我必须使用魔法方法new,但我似乎无法处理给出的参数。例如:
a = Complex(4, 5)
print(a)
> Complex(4, 5)
b = Complex(3, 0)
print(b)
> 3
c = Complex(0, 0)
print(c)
> 0
我想给b和c变量赋值。不是某种类型的字符串解决方案,其中类假装是它不是的东西。我该怎么做?你知道吗
感谢回复:))
Tags:
如前所述,
new
比其他解决方案简单得多,因为所有的解决方案都是组合在一起的。你可以说如果第二个参数为零,那么返回a
,否则再次调用__new__
。你知道吗我认为这可能正是你需要的,因为你指出你在努力寻找解决方案。你知道吗
正如其他人在评论中指出的,这正是
__new__
的目的。你知道吗下面是创建类
Complex
的实例时发生的情况:Complex(a, b)
。你知道吗Complex.__new__(a, b)
被调用,默认情况下(即,如果不重写__new__
方法),这将返回类型为Complex
的空对象。你知道吗Complex.__new__(a, b)
(让我们把它表示为cmplx
)返回的对象实际上是Complex
类型,那么调用cmplx.__init__(a, b)
,或者等价地调用Complex.__init__(cmplx, a, b)
。你知道吗对于您的情况,只需在调用第二个参数时在
__new__
方法中返回int
,否则调用超类的__new__
方法。即:这不正是你使用
__str__
的目的吗?也许我没有正确地理解你,但是如果你担心你不能用你的对象做数学运算,你只需要实现相关的魔法方法,比如__add__
。你知道吗相关问题 更多 >
编程相关推荐