根据其他类实例自动更新实例的属性

时间:2017-07-14 14:49:12

标签: python class attributes

假设我有一个名为Rectangle的班级和另一个名为Force的班级:

class Rectangle(object):
    def __init__(self, l, h, x0, y0):
        self.l = l
        self.h = h
        self.x0 = x0
        self.y0 = y0

    @property
    def vertices(self):
        return [(self.x0, self.y0), (self.x0, self.y0+self.h),
                (self.x0+self.l, self.y0+self.h), (self.x0+self.l, self.y0)]


class Force(object):
    def __init__(self, val, pt):
        self.value = val
        self.point = pt

假设我初始化

>>> r = Rectangle(10,6,0,0)
>>> f = Force(10,r.vertices[2])

因此我得到了

>>> r.vertices
 [(0, 0), (0, 6), (10, 6), (10, 0)]
>>> f.point
 (10, 6)

现在,我将矩形的高度更改为h=5

>>> r.h=5
>>> r.vertices
 [(0, 0), (0, 5), (10, 5), (10, 0)]

我可以以某种方式自动更新f.point吗?就像通过引用传递一样(但在python中不存在)。

0 个答案:

没有答案