2013-05-03 2 views
3

У меня есть класс Python Shape с атрибутом, называемым datum. Это список с двумя числами, x и y.Присвоить атрибуты при изменении другого

Если я

my_shape = Shape() 

Тогда геодезическая заданное значение по умолчанию: [0,0] Теперь я хочу, чтобы переназначить опорную точку, выполнив:

my_shape.datum = [3,2] 

тогда моя точка привязки является теперь назначен этот список.

Но у меня также есть атрибуты x и y. Как я могу автоматически обновить x и y, чтобы стать первым и вторым элементом списка нулей?

Я положил это в INIT

self.x = self.datum[0] 
self.y = self.datum[1] 

Но назначает только х и у к инициализированы значениями, и я не могу понять, как обновлять, когда обновления self.datum.

Прошу прощения, если это сбивает с толку. Большое вам спасибо за помощь этому новичку.

Джейсон

ответ

6

Вы можете определить x и y в properties:

@property 
def x(self): 
    return self.datum[0] 

@x.setter 
def x(self, value): 
    self.datum[0] = value 

@property 
def y(self): 
    return self.datum[1] 

@y.setter 
def y(self, value): 
    self.datum[1] = value 

Таким образом, x и y не являются атрибутами (и, таким образом, данные хранятся только один раз в datum), но оставаться пригодными к употреблению как таковые (то есть: my_shape.x и my_shape.y работает должным образом).

+2

последние строки должны быть '@ y.setter' и' def y ... ', правильно? – Stefan

+0

Невозможно отредактировать его, должно быть не менее 6 символов :( – paulm

+0

Справа, копия пасты врага ... :) – icecrime

Смежные вопросы