Андрей СветловЕсли я все правильно понимаю, то после присвоения b.center.x = 10 получится некая неоднозначность с атрибутом x для объекта b.center: x, как атрибут класса Coord и x, как атрибут конкретного экземпляра класса Coord (т.е b.center)
callret, а прямо в лоб не пробовали? Вам же нужны не “связанные”, а “единые” координаты.>>> class Coord(object):
... x = 0
... y = 0
...
... def __repr__(self):
... return "<%s, %s>" % (self.x, self.y)
...
>>> class Box(object):
... def __init__(self):
... self.center = Coord()
...
...
>>> class Circle(object):
... def __init__(self):
... self.center = Coord()
...
>>> b = Box()
>>> b.center
<0, 0>
>>> c = Circle()
>>> c.center
<0, 0>
>>> b.center.x = 10
>>> b.center
<10, 0>
>>> c.center
<0, 0>
>>> c.center = b.center
>>> c.center
<10, 0>
>>> b.center.y = 5
>>> c.center
<10, 5>
>>>
уж если единые координаты, то наверно как-то так:
class Coord(object):
x = 0
y = 0
def __setattr__(self, key, value):
if "x" == key:
self.__class__.x = value
elif "y" == key:
self.__class__.y = value
else:
super(Coord, self).__setattr__(key, value)
def __repr__(self):
return "<%d, %d>" % (self.x, self.y)