Python - 点类没有返回正确的点

时间:2016-03-08 18:40:09

标签: python

所以我有一个点类,我在其中声明一个点,然后对它执行操作。其中一个操作是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 方法:

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)))

1 个答案:

答案 0 :(得分:3)

您正在分配新属性

/api/v1/me/patients/{patient_id}/public_number

/models/patient.js export default DS.Model.extend({ public_number: DS.attr('string') }); self.x0 = f * self.x self.y0 = f * self.y 属于x0y0的不同属性。因此,xy保持不变。