【发布时间】:2014-02-22 21:16:07
【问题描述】:
观察以下代码:
class Angle(int):
"""Basic Angle object: Angle(number)"""
def __init__(self, angle):
angle %= 360
super(Angle, self).__init__(angle)
相当简单的东西,Angle 基本上只是一个不会超过 360 或低于 0 的int。这个__init__ 只是确保输入角度与前面列出的条件匹配。但由于某种原因,上面的代码给了我以下输出:
>>> a = Angle(322)
>>> a
322
>>> b = Angle(488)
>>> b
488
到底为什么会发生这种情况?代码对我来说似乎微不足道,但也许我只是遗漏了一些非常明显的东西。
【问题讨论】:
-
好的,谢谢,添加一个自定义的
__new__魔术方法完全解决了问题,并且很好地维护了其余代码。谢谢!
标签: python class inheritance