遵守以下代碼:看似瑣碎的問題致電廉政局在Python __init__
class Angle(int):
"""Basic Angle object: Angle(number)"""
def __init__(self, angle):
angle %= 360
super(Angle, self).__init__(angle)
相當簡單的東西,Angle
基本上只是一個int
永不熄滅高於360或低於0。這__init__
只是確保在輸入角度符合之前列出的條件。但由於某種原因,上面的代碼給了我以下輸出:
>>> a = Angle(322)
>>> a
322
>>> b = Angle(488)
>>> b
488
爲什麼地球上會發生這種情況?代碼對我來說似乎很微不足道,但也許我只是錯過了一些非常明顯的東西。
可能重複的[Python:擴展int和MRO爲\ _ \ _ init \ _ \ _](http://stackoverflow.com/questions/1184337/python-extending-int-and-mro-for- init) – teferi
好的,謝謝,添加一個自定義的'__new__'魔術方法完全解決了這個問題,並且很好地維護了代碼的其餘部分。謝謝! – user3002473