Python-point类未返回正确的点

Python-point类未返回正确的点,python,Python,所以我有一个point类,在这里我声明一个点,然后对它执行操作。其中一个操作是scale,它接收一个点并对其进行缩放,如果该点不是浮点值,则会引发错误。下面是它的样子: def scale(self, f): if not isinstance(f, float): raise Error("Parameter \"f\" illegal.") self.x0 = f * self.x self.y0 = f * self.y 如果我用这个测试代码测试它

所以我有一个point类,在这里我声明一个点,然后对它执行操作。其中一个操作是scale,它接收一个点并对其进行缩放,如果该点不是浮点值,则会引发错误。下面是它的样子:

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
因此,错误消息看起来很好,但它打印出来的值却不是。那么为什么它不打印出正确的值呢?以下是我的init和str方法:

您正在分配给新属性:


x0
y0
是与
x
y
不同的属性。因此,
x
y
保持不变。

我认为
scale
Point
类的一部分。一个明显的错误是在
scale
方法中使用
self.x0
self.y0
(应该是
x
y
),因为
方法使用
x
y
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)))
self.x0 = f * self.x
self.y0 = f * self.y