-1
所以我有一個點類,我聲明一個點,然後對其執行操作。其中一個操作是縮放,如果該點不是浮點值,則會引入一個點並縮放它,同時產生錯誤。這裏是什麼樣子:Python - 點類不返回正確的點
def scale(self, f):
if not isinstance(f, float):
raise Error("Parameter \"f\" illegal.")
self.x0 = f * self.x
self.y0 = f * self.y
如果我用這個測試代碼測試:
print '*** scale'
# f illegal
try:
p0 = Point(0.0, 0.0)
p0.scale(1)
except Error as e:
print 'caught:', e.message
# normal case
p0 = Point(2.0, 3.0)
p0.scale(2.3)
print p0
然後輸出我得到的是:
*** scale
caught: Parameter "f" illegal.
2 3
但我想要的輸出是:
*** scale
caught: Parameter "f" illegal.
5 7
所以錯誤信息e看起來不錯,但它打印的值不是。那麼爲什麼不打印出正確的值呢?這裏是我的初始化和STR方法:
def __init__(self, x, y):
if not isinstance(x, float):
raise Error("Parameter \"x\" illegal.")
self.x = x
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.y = y
def __str__(self):
return '%d %d' % (int(round(self.x)), int(round(self.y)))
我想'scale'是'Point'類的一部分。一個顯而易見的錯誤是在'scale'方法中使用'self.x0'和'self.y0'(應該是'x'和'y'),因爲'__str__'方法使用'x'和'y'。 – shahkalpesh